繁体   English   中英

网址期间出现NoReverseMatch错误

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM