Django框架的新手。主要是通过文档阅读。 但是这个我无法破解。
尝试在标题中添加网址,该网址会转发到“标题”帖子。
错误:
NoReverseMatch at / Reverse为'assignment_detail'带参数 '('',)' 未找到。尝试过1种模式:['assignment_detail /']请求 方法:GET请求URL:http://127.0.0.1:8000/ Django版本:2.0.2 异常类型:NoReverseMatch异常值:反向 找不到带有参数'('',)'的'assignment_detail'。 1种模式 尝试过:['assignment_detail /']例外 位置:C:\ Users \ internit \ Dropbox \ Python \ codepython \ env \ lib \ site-packages \ django \ urls \ resolvers.py 在_reverse_with_prefix中,第632行Python 可执行文件:C:\ Users \ internit \ Dropbox \ Python \ codepython \ env \ Scripts \ python.exe Python版本:3.6.2 Python路径:
[ 'C:\用户\ internit \收存箱\的Python \ codepython \ codepython', 'C:\用户\ internit \收存箱\的Python \ codepython \ ENV \脚本\ python36.zip', 'C:\用户\ internit \收存箱\的Python \ codepython \ ENV \的DLL', 'C:\用户\ internit \收存箱\的Python \ codepython \ ENV \ lib中', 'C:\用户\ internit \收存箱\的Python \ codepython \ ENV \脚本', 'c:\ program files(x86)\ python36-32 \ Lib','c:\ program files (86)\ python36-32 \的DLL, 'C:\用户\ internit \收存箱\的Python \ codepython \ ENV', 'C:\用户\ internit \ Dropbox的\ Python的\ codepython \ ENV \ LIB \站点包'] 服务器时间:2018年2月8日星期四14:53:07 +0000模板期间出错 渲染在模板中 C:\ Users \用户internit \ Dropbox的\ Python的\ codepython \ codepython \ codepython \模板\ base.html文件, 第0行的错误使用参数'('',)找不到'assignment_detail'的反转。 1 模式尝试:['assignment_detail /'] 1 {%load static%} 2 3 4 5 6 7 8 9 10 CODEPYTHON.NET 回溯切换到复制粘贴视图 C:\ Users \用户internit \ Dropbox的\ Python的\ codepython \ ENV \ LIB \站点包\ Django的\核心\处理器\ exception.py 在内心 response = get_response(request)...▶本地变量C:\ Users \ internit \ Dropbox \ Python \ codepython \ env \ lib \ site-packages \ django \ core \ handlers \ base.py 在_get_response中 response = self.process_exception_by_middleware(e,request)...▶本地变量 C:\ Users \用户internit \ Dropbox的\ Python的\ codepython \ ENV \ LIB \站点包\ Django的\核心\处理器\ base.py 在_get_response中 response = wrapped_callback(request,* callback_args,** callback_kwargs)...▶本地变量C:\ Users \ internit \ Dropbox \ Python \ codepython \ codepython \ home \ views.py 在家 return render(request,'home.html',{'post':post})...▶Local vars
家/ 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'),
我在这里缺少什么。 提前谢谢。
答案 0 :(得分:1)
您的网址并不意味着您必须传递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'),
答案 1 :(得分:0)
这个错误是Django告诉你它找不到任何名为'assignment_detail'的URL,这些URL有一个参数可以传入。
这是因为myproject/urls.py
中的您的网址条目缺少您在视图中使用的参数(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