我总是遇到这样的错误:
参数为“()”且关键字参数为“{u'pk”:无}的“user\u home”的反转。已尝试1个图案:['ibs/(?P[0-9]+)/home/$']
在我的模板中,我可以显示我的用户.pk(它等于1)但是当我使用它并在我的视图中传递它时,我得到了上面的错误(pk:none)。我读过一些关于这个的文章。有些是因为网址模式,但我改变和检查我的网址,但什么也没有发生。还是会出错。你知道吗
这是我的网址:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^ibs/$', views.index, name='index'),
url(r'^ibs/register/$', views.user_add, name='user_add'),
url(r'^ibs/login/$', views.user_login, name='user_login'),
url(r'^ibs/(?P<pk>[0-9]+)/home/$', views.user_home, name='user_home'),
url(r'^ibs/(?P<user_pk>[0-9]+)/logout/$', views.user_logout, name='user_logout'),
url(r'^ibs/(?P<pk_item_add>[0-9]+)/additem/$', views.item_add, name='item_add'),
url(r'^ibs/(?P<pk_item>[0-9]+)/viewitem/(?P<pk_user>[0-9]+)/$', views.item_detail, name='item_detail'),
]
我的模板:
{% block home %}
<li class="active"><a href="{% url "user_home" pk=user.pk %}">Home</a></li>
{% endblock home %}
{% block register %}
{% endblock register %}
{% block login %}
{% endblock login %}
{% block logout %}
<li>
<a method="post" href="{% url "user_logout" user_pk=user.pk %}"><span class="glyphicon glyphicon-log-out"></span> Logout
</a>
</li>
{% endblock logout %}
{% block post %}
<li>
<a method="post" href="{% url "item_add" pk_item_add=user.pk %}"> {{user.pk}}
</a>
</li>
{% endblock post %}
def user_login(request):
if request.method == "POST":
#username is unique, get User where username is equal to requested username
username = User.objects.get(username = request.POST['username'])
if username.password == request.POST['password']:
request.session['username'] = username.id
return redirect('system.views.user_home', pk=username.id)
else:
return render(request, 'system/user_login.html')
你知道吗视图.py你知道吗
def user_home(request, pk):
user = get_object_or_404(User, pk=pk)
try:
if request.session['username'] == user.pk:
items = Item.objects.all()
types = Type.objects.all()
return render(request, 'system/user_home.html', {'user':user, 'types':types,
'items': items})
else:
return redirect('system.views.user_login')
except KeyError:
return redirect('system.views.user_login')
def user_logout(request, user_pk):
user = get_object_or_404(User, pk=user_pk)
try:
del request.session['username']
return redirect('system.views.user_login')
except KeyError:
pass
return redirect('system.views.user_login')
我哪里出错了?我将所有必要的数据从视图传递到模板。你知道吗
当用户没有登录时,
user
很可能是没有主键的models.AnonymousUser
。你知道吗https://docs.djangoproject.com/en/1.8/ref/contrib/auth/#anonymous-users
如果用户没有登录,那么您可能根本不希望他们看到该模板。将它们重定向到视图中的登录页,或者检查用户在模板中是否匿名。你知道吗
相关问题 更多 >
编程相关推荐