[英]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.