我總是得到這樣的錯誤:這是爲什麼每次我註銷,然後登錄再次的PK變得沒有在Django
反向的「USER_HOME」與參數「()」和關鍵字參數「{u'pk」 :無}'找不到。 1模式嘗試:['ibs /(?P [0-9] +)/ home/$']
在我的模板中我可以顯示我的user.pk(它等於1)我使用它並在我的意見中傳遞它我得到了上面的錯誤(pk:none)。我已閱讀了關於此的一些線程。有些是因爲url模式,但我改變並檢查我的url,但沒有發生任何事情。仍然有錯誤。
這是我的網址:
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')
views.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')
我有什麼錯?我將所有必要的數據從視圖傳遞到模板。
你使用的是Django的認證系統嗎?我覺得你寫的很多東西可能不那麼複雜。 – onyeka