Как передать экземпляр пользователя представлению в Django - PullRequest
0 голосов
/ 07 декабря 2011

Я создаю приложение для блога, в котором хочу создать представление, отображающее все блоги определенного пользователя. Для этого мне нужно передать пользовательский экземпляр как

def blogs(request,author=None,slug=None):

   # If the author context has been passed then display the blogs of that author 
   if author:

        # Displays a particular blog
        if slug:         
            this_blog = get_object_or_404(Entry, creator = author, slug = slug)
            return render_to_response('blog/blog_view.html', {'blog': this_blog,},context_instance=RequestContext(request))

        # Displays all the blogs of a particular user
        else:
            blog_list = Entry.objects.filter(creator = author)
            return render_to_response('blog/all_blogs_user.html', {'Blogs': blog_list},context_instance=RequestContext(request))

Хотя синтаксически это правильно, но сейчас я не знаю, как передать этот пользовательский контекст в мой URL. Ранее я пытался передать только идентификатор пользователя, но это не работает. Есть ли другая альтернатива этому занятию? Когда я создаю URL-адрес изнутри или перенаправляю на этот конкретный вид, это нормально, но как будет выглядеть внешний URL-адрес Мой urls.py как

from django.conf.urls.defaults import patterns, include, url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.views.generic.simple import direct_to_template

urlpatterns = patterns('',
    url(r'^$', 'blog.views.blogs', name='all_blogs'),
    url(r'^(?P<author>\d+)/(?P<slug>[-\w]+)/$', 'blog.views.blogs', name='view_blog'),                       
    url(r'^(?P<author>\d+)/(?P<slug>[-\w]+)/edit/$', 'blog.views.post_form', name='edit_blog'),
    url(r'^new/$', 'blog.views.post_form', name='new_blog'),
    url(r'^(?P<author>\d+)/(?P<slug>[-\w]+)/delete/$', 'blog.views.delete_blog', name='delete_blog'),

)
urlpatterns += staticfiles_urlpatterns()

Ответы [ 2 ]

3 голосов
/ 07 декабря 2011

Обычно это работает так:

urls.py

url(r'/author/(?P<slug>/$', 'author_index'),

views.py

def author_index(request, slug):
    author = get_object_or_404(User, username=slug)

    return render_to_response('author_index.html', {
        'author': author,
    }, context_instance=RequestContext(request))
1 голос
/ 07 декабря 2011

Вы можете просто получить доступ к пользователю в представлении с помощью request.user .Точно так же вы можете POST данные также в объекте запроса.

...