找不到页面django

时间:2017-11-12 14:25:52

标签: python django

为什么会这样?我按照说明做了一切。我学习。

urls.py

from django.conf.urls import url,include
from django.contrib import admin
from . import views 
urlpatterns = [
    #url(r'^$',views.main,name="main"),
    url(r'^post/(?P<id>[0-9]+)/', views.post_detail, name='post_detail'),
]

views.py

from django.shortcuts import render
from django.utils import timezone
from .models import Post
from django.shortcuts import render, get_object_or_404
# Create your views here.

def post_detail(request,id):
    post = get_object_or_404(Post, pk=id)
    return render(request, 'main/post_detail.html', {'post': post})

post_detail.html

{% extends 'main/base.html' %}

{% block content %}
    <div class="post">
        {% if post.published_date %}
            <div class="date">
                {{ post.published_date }}
            </div>
        {% endif %}
        <h1>{{ post.title }}</h1>
        <p>{{ post.text|linebreaksbr }}</p>
    </div>
{% endblock %}

怎么办?即使不是id put pk,也没有任何帮助。

enter image description here

1 个答案:

答案 0 :(得分:1)

你的urls.py文件应该可以工作(它适用于我)但你应该用$结束这个网址,以防止在产品ID之后用这个视图匹配网址。

url(r'^post/(?P<id>[0-9]+)/$', views.post_detail, name='post_detail'),

您可以在post_detail方法中使用pdb来调用:

def post_detail(request,id):
    import pdb
    pdb.set_trace()
    post = get_object_or_404(Post, pk=id)
    return render(request, 'main/post_detail.html', {'post': post})

如果调用方法,则执行应在pdb.set_trace()行停止。您可以按'c'和ENTER恢复它。 pdb非常有用,你应该在遇到问题时先使用它。 (模式详情:https://docs.python.org/2/library/pdb.html

如果调用方法,如果缺少具有给定id的帖子应该是问题,否则你应该确保来自设置的ROOT_URLCONF引用该模块。

要检查是否存在此ID:

在django shell中尝试此命令:

Post.objects.get(pk=1)

如果它返回

Post.DoesNotExist

使用以下内容创建此帖子

Post.objects.create(pk=1, **some_values)