[英]django url not matching right url with reverse match error
我在我的 django 項目中遇到非常不尋常的錯誤,因為 django 讀取了錯誤的 url 未在單擊的 href 標記中說明。 要導航到的頁面只是一個帶有簡單 url 模式的頁面,而它導航到的頁面需要兩個 arguments 用於反向匹配,預計不會提供,這會導致錯誤:
未找到 arguments '('', '')' 的 'search-friend-detail' 反向。 嘗試了 1 種模式:['chat/search\-friend\-detail/(?P[^/]+)/(?P[^/]+)/$']
網址.py:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('users.urls')),
path('posts/home.html', p_views.PostsListView.as_view(), name='posts-home'),
path('friends/search.html', f_views.search, name='friends-search'),
path('friends/add-friend/', f_views.SearchDetail, name='friends-search-detail'),
path('friends/accept-requests/', f_views.AcceptRequests, name='accept-requests'),
path('friends/accept-requests-detail/', f_views.AcceptRequestsDetail, name='accept-requests-detail'),
path('chat/chatt.html', pc_views.SearchChat, name='chat-search'),
path('chat/search-friend-detail/<str:username>/<str:usernamee>/', pc_views.SearchChatDetail, name='search-friend-detail'),
]
“聊天搜索”是我希望通過此鏈接在 base.html 文件中導航到的實際 url:
<a href="{% url 'chat-search' %}"><i class="fa fa-envelope"></i></a>
而是奇跡般地導航到最后一個 url 即“搜索朋友搜索”。 雖然鏈接在我的 chatt.html 文件中:
<a class="mr-2" href="{% url 'search-friend-detail' results.Accepter.username results.Added.username %}">{{ results.Added.username }}</a>
編輯:為清楚起見,完整的 chatt.html 文件;
b{% extends "posts/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-sm-9 col-md-7 col-lg-5 mx-auto">
<form method="POST" class="form-signin">
{% csrf_token %}
<div class="form-label-group">
{{ form|crispy}}
</div>
<button class="btn btn-lg btn-primary btn-block text-uppercase" type="submit">Search</button>
</form>
</div>
{% if results.Accepter == request.user %}
<article class="media content-section">
<img class="rounded-circle article-img" src="{{ results.Added.profile.image.url }}">
<a class="mr-2" href="{% url 'search-friend-detail' results.Accepter.username results.Added.username %}">{{ results.Added.username }}</a>
<div class="media-body">
<div class="article-metadata">
{% else %}
<article class="media content-section">
<img class="rounded-circle article-img" src="{{ results.Accepter.profile.image.url }}">
<a class="mr-2" href="{% url 'search-friend-detail' results.Accepter.username results.Added.username %}">{{ results.Accepter.username }}</a>
<div class="media-body">
<div class="article-metadata">
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}
我的意見.py:
def SearchChat(request):
result=None
if request.method == 'POST':
form= ChatFriend(request.POST)
if form.is_valid():
name = form.cleaned_data.get('chatsearch')
userr = User.objects.get(username=name)
if FriendList.objects.filter(Accepter=request.user,Added=userr).exists():
result = FriendList.objects.get(Accepter=request.user,Added=userr)
else:
result = FriendList.objects.get(Accepter=userr,Added=request.user)
else:
form= ChatFriend()
context={
'results': result,
'form':form,
}
return render(request, 'chat/chatt.html', context)
def SearchChatDetail(request, username, usernamee):
Acceptor= User.objects.get(username=username)
Addid= User.objects.get(username=username)
friend= FriendList.objects.get(Accepter=Acceptor,Added=Addid)
msgs= Chat.objects.filter(messengers=friend)
if request.method == 'POST':
form= message(request.POST, instance=request.user)
if form.is_valid():
form.save()
redirect('search-friend-detail',friend.Accepter.username,friend.Added.username)
else:
form= message(instance=request.user)
context={
'friend':friend,
'msgs':msgs,
'form':form,
}
return render(request, 'chat/search-friend-detail.html', context)
編輯:我忘了提到我第一次運行它工作的代碼時,只睡了幾個小時回到下一個任務然后開始產生錯誤而根本不接觸代碼。
正確閱讀了常青樹的回復后解決了問題,我的錯誤是我將此視圖與我編寫的另一個有效工作的視圖進行了比較,但只記得我使用 ajax 請求來執行視圖代碼而不是加載新模板已經完成了這個問題,我所做的一切did 是添加一個條件語句以在搜索表單為空時僅顯示搜索表單。 回答了這個問題,因為我知道以后還有其他人會遇到這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.