2016-12-01 60 views
3

我正在建立一个机构的新框架。我目前正在与Django合作创建框架。当我创建“新用户”表单时,我注意到页面的某些部分呈现时没有上下文。这是为什么?Django呈现时没有上下文。为什么?

查找:

view.py

from django.contrib.auth.models import User 

def index(request): 
    context = { 
       'user': request.user, 
       'userDB': User.objects.all() 
       } 
    return render(request, 'user/home.html', context) 

def new_user(request): 
    return render(request, 'users/new.html', {}) 

用户/ home.html做为

{% user.username %} 

用户/ new.html

{% user.username %} 

urls.py

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.index),          # User homepage 
    url(r'^new/', views.new_user),         # Add user 
    url(r'^(?P<user>[0-9]+)/edit', views.edit_user),   # Edit user 
] 

正如你所看到的,有没有可用的上下文来渲染new_user,但它呈现它。恐怕这会在将来带来一些问题。虽然,它的预期效果,但我不明白它...

+0

显示您的urls.py –

+0

网址更新! –

+0

你有'edit_user'视图吗?如果是的话,发帖 –

回答

1

你需要知道的django.contrib.auth.models.Useruser实例总是传递给由Django的背景下为您服务。这与request.user一样。即使User未注册或登录,AnonymousUser的实例也会通过。

+0

所以,如果我把'{%user.username%}'在模板中,它将呈现没有任何上下文的'User'实例? –

+0

@MarcoAurélio是的。此外,最好的做法是检查天气用户是否使用'user.is_authenticated'进行身份验证,以便您可以决定是否显示用户名的天气 – pythad

+0

我不知道......是否在文档中? –

相关问题