簡體   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