Greetings! My first time using this forum. Using Django 2.0 for a project. 
I'm a beginner so I appreciate your patience.

I have a type of blog app,  but I don't want the routing/url to be 
traditional. I want the user to be able to hit a button that says "Random 
Post" which takes them to a random blog post.

I'm not at all sure of the best way to approach this, but I'll share what I 
have for context. This blog works because I have class-based views using 
ListView and DetailView. I have a template that shows ALL of the blog posts 
in chronological order as a ListView, and I have a template that shows each 
blog post as a DetailView. It works great but I want this "random" 
functionality for my routing.

*Model*: I created a model called Post with all the typical fields, 
including a unique autofield. My intention was to randomly select a pk 
using this autofield. I thought about using a property to do some of the 
querying/logic for my random functionality, but I'm not sure if this is the 
best way to do it.

*View: *I have created a custom method-type view, but it doesn't work.

def random_post(request):
>
>     posts = Post.objects.all()
>
>     shuffle (posts)
>
>     random_obj = posts.first()
>
>     context = {'random_obj': random_obj,}
>
>     return render(request, 'blog/random_post.html', context)
>
>
*URL: *I have a 'path' type urlpattern...

path('posts/random_post/', views.random_post, name='random_post'),
>

*TEMPLATE: *Here is the link to my randomly selected blog post...

<a class="btn btn-primary btn-lg" href="{% url 'random_post' %}" 
> role="button">Random Blog Post</a>


The "Detail" template for my blog post has nothing special. The routing 
seems to work just fine, but the fields are empty. No data is being sent 
from the model to the view.

FYI, this is actually not a blog. I'm using blog logic for the sake of 
conversation, but I have a very specialized reason for wanting to choose 
random objects and render them in a view.

Thanks in advance!

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/c68e062a-c2a3-434e-aa70-cfcf3e10e600%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to