[英]NoReverseMatch error during url
Django框架的新功能。 主要閱讀文檔。 但是我無法破解。
嘗試將URL添加到標題中,該URL將被轉發到“標題”中。
錯誤:
找不到與參數'('',)'的'assignment_detail'在/反向匹配的NoReverseMatch。 嘗試了1個模式:['assignment_detail /']請求方法:GET請求URL: http : //127.0.0.1 :8000/ Django版本:2.0.2異常類型:NoReverseMatch異常值:帶有參數的“ assignment_detail”的取反'('',)' 未找到。 嘗試了1個模式:['assignment_detail /']異常位置:_reverse_with_prefix,第632行Python中的C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ env \\ lib \\ site-packages \\ django \\ urls \\ resolvers.py可執行文件:C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ env \\ Scripts \\ python.exe Python版本:3.6.2 Python路徑:
['C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ codepython','C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ env \\ Scripts \\ python36.zip','C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ env \\ DLLs','C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ env \\ lib','C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ env \\ Scripts','c :\\ program files(x86)\\ python36-32 \\ Lib','c:\\ program files(x86)\\ python36-32 \\ DLLs','C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ env',' C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ env \\ lib \\ site-packages']服務器時間:2018年2月8日,星期四14:53:07 +0000模板渲染期間出錯C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ codepython \\ codepython \\ templates \\ base.html,第0行錯誤找不到帶有參數“('',)”的“ assignment_detail”。 嘗試了1個模式:['assignment_detail /'] 1 {%靜態負載%} 2 3 4 5 6 7 8 9 10 CODEPYTHON.NET Traceback切換到復制粘貼視圖C:\\ Users \\ internit \\ Dropbox \\內部響應中的Python \\ codepython \\ env \\ lib \\ site-packages \\ django \\ core \\ handlers \\ exception.py = get_response(request)...▶本地var C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ env \\ _get_response中的lib \\ site-packages \\ django \\ core \\ handlers \\ base.py response = self.process_exception_by_middleware(e,request)...▶本地var C:\\ Users \\ internit \\ Dropbox \\ Python \\ codepython \\ env \\ lib \\ _get_response響應中的site-packages \\ django \\ core \\ handlers \\ base.py =包裝的回調(請求,* callback_args,** callback_kwargs)...▶本地var C:\\ Users \\ internit \\ Dropbox \\ Python \\ code \\ codepython \\ codepython \\ home \\ home中的\\ views.py返回render(request,'home.html',{'post':post})...▶本地變量
家用/ urls.py
from django.conf.urls import url
from django.conf import settings
from django.conf.urls.static import static
from codepython.posts import views
from posts import views as ps
app_name ='home'
urlpatterns = [
url(r'^$/', views.create, name='create'),
url(r'(?P<pk>\d+)/$', views.home, name='home'),
url(r'(?P<pk>\d+)/$', views.userposts, name='userposts')
url(r'^posts/(?P<post_id>[0-9]+)/$', ps.assignment_detail, name='assignment_detail'),
]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
家用/ views.py
from django.shortcuts import render, get_object_or_404
from django.apps import apps
# Create your views here.
def home(request):
posts = apps.get_model("posts", "Post")
post = posts.objects.all().order_by('-pub_date')[0:6]
return render(request, 'home.html', {'post':post})
def assignment_detail(request, post_id):
posts = apps.get_model('posts', 'Post')
post = get_object_or_404(posts, pk=post_id)
return render(request, "assignment_detail.html", {'post': post})
home.html的
<div class="row">
{% for post in post.all %}
<div class="col-md-4">
<div class="thumbnail">
<div class="caption">
<p>Level: {{post.assignment_level}}</p>
<a href="{% url 'assignment_detail' post_id %}"><h3>{{ post.title }}</h3></a>
<p>by {{post.author}} from {{post.pub_date}}</p>
<h4>{{post.assignment_body}}</h4>
<p><a href="#" class="btn btn-primary" role="button">Read...</a></p>
</div>
</div>
</div>
{% endfor %}
</div>
{% endblock%}
MyProject的/ urls.py
url(r'^assignment_detail/', views.assignment_detail,name='assignment_detail'),
我在這里想念什么。 先感謝您。
您的網址並不意味着您必須傳遞一個ID,而是在模板中傳遞一個ID:
<a href="{% url 'assignment_detail' post_id %}"><h3>{{ post.title }}</h3></a>
它應該是:
url(r'^assignment_detail/(?P<post_id>[0-9]+)', views.assignment_detail,name='assignment_detail'),
該錯誤是Django告訴您的,它找不到任何帶有傳入參數的名為'assignment_detail'的URL。
這是因為myproject/urls.py
url條目缺少在視圖中使用的參數( post_id
)。 您需要將該網址行更新為類似於以下內容的內容:
url(r'^assignment_detail/(?P<post_id>[0-9]+)/$', views.assignment_detail, name='assignment_detail'),
URL末尾的更改添加了一個命名的正則表達式來捕獲post_id
值,然后將其傳遞到視圖中。
查看您的模板代碼,您需要更新{%url%}塊以使用post.id
(通知期)而不是post_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.