Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python post_detail()视图缺少必需的位置参数:_Python_Django - Fatal编程技术网

Python post_detail()视图缺少必需的位置参数:

Python post_detail()视图缺少必需的位置参数:,python,django,Python,Django,我是django的初学者。我面临的问题是,我无法获得年、月和帖子的帖子详细视图。 错误是post\u detail()缺少4个必需的位置参数:“年”、“月”、“日”和“后” 这是models.py from django.db import models from django.utils import timezone from django.contrib.auth.models import User from django.core.urlresolvers i

我是django的初学者。我面临的问题是,我无法获得年、月和帖子的帖子详细视图。 错误是
post\u detail()
缺少4个必需的位置参数:“年”、“月”、“日”和“后”

这是models.py

 from django.db import models
    from django.utils import timezone
    from django.contrib.auth.models import User
    from django.core.urlresolvers import reverse


    class Post(models.Model):
        STAUTS_CHOICE = ( ('draft','Draft'),('published','Published'),)
        title =models.CharField(max_length =250) 
        slug = models.SlugField(max_length =250)
        author = models.ForeignKey(User,related_name='blog_post')
        body = models.TextField()
        publish =models.DateTimeField(default = timezone.now)
        created = models.DateTimeField(auto_now_add=True)
        udated = models.DateTimeField(auto_now=True) 
        status = models.CharField(max_length =250 , 
        choices = STAUTS_CHOICE , default = 'draft')

        class Meta:
             ordering = ('-publish',)               

        def get_absolute_url(self):
            return reverse('blog:post_detail', args = [self.slug, self.publish.year , self.publish.strftime('%m'), self.publish.strftime('%d')]])  

        def __str__(self):
             return self.title
    ______________________________________________________________
这是views.py

from django.shortcuts import render , get_object_or_404 
from .models import Post

def post_list(request):
    post = Post.objects.all()
    return render(request,'blog/post/list.html',{'post':post})

def post_detail(request,slug,year, month,day,post):
    post = get_object_or_404(Post, slug = slug , status = 'published' ,publish_year = year, publish_month = month , publish_day = day)
    return render(request,'blog/post/detail.html',{'post':post})

这是url.py

from django.conf.urls import url 
from .import views

    urlpatterns = [
        url(r'^post_list',views.post_list,name ='post_list'),
        url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/'r'(?P<slug>[-\w]+)/$',views.post_detail,name='post_detail'),
从django.conf.url导入url
从。导入视图
URL模式=[
url(r'^post\u list',views.post\u list,name='post\u list'),
url(r'^(?P\d{4})/(?P\d{2})/(?P\d{2})/'r'(?P[-\w]+)/$,视图。发布详细信息,名称='发布详细信息',
这是post_detail.html页面

{% extends 'blog/base.html' %}
    {% block title %}Post details{% endblock %} 
     {% block content %}
    <h2><a>{{post.title}}</a></h2>
    <p class="date">published {{ post.published}} by {{ post.author}}</p>
    {{ post.body|linebreaks }}
     {% endblock %}
{%extends'blog/base.html%}
{%block title%}发布详细信息{%endblock%}
{%block content%}

由{{x.author}发布{{x.published}

{x.body | truncatewords:30 | linebreaks}{%endfor%}{%endblock%}
这是base.html

{% load staticfiles %}
<!DOCTYPE html>

<head>
    <title>{% block head_title %}Welcome to my blog{% endblock %}</title>

    <!-- <link rel="stylesheet" href=""> -->
</head>

<body>
    <div id="sidebar">
        <h1></h1>
    </div>
    <div id="content">
        {% block content %} {% endblock %}</div>
</body>

</html>
{%load staticfiles%}
{%block head_title%}欢迎来到我的博客{%endblock%}
{%block content%}{%endblock%}

从post\u详细视图中删除post参数。并删除同一视图的第三个url。现在,您请求的url应该是:

localhost:8000/2017/12/16/my-post

从post_详细视图中删除post参数。并删除同一视图的第三个url。现在,您请求的url应为:

localhost:8000/2017/12/16/my-post

到目前为止,我猜您想要解析
domain/year/month/day/slug
URL

以下更改将使其正常工作

views.py

from django.shortcuts import render , get_object_or_404 
from .models import Post

def post_list(request):
    post = Post.objects.all()
    return render(request,'blog/post/list.html',{'post':post})

def post_detail(request,slug,year, month,day,post):
    post = get_object_or_404(Post, slug = slug , status = 'published' ,publish_year = year, publish_month = month , publish_day = day)
    return render(request,'blog/post/detail.html',{'post':post})
def post_detail(request,slug,year, month,day):
    post = get_object_or_404(Post, slug = slug , status = 'published' ,publish__year = year, publish__month = month , publish__day = day)
    return render(request,'blog/post/detail.html',{'post':post})
url.py

urlpatterns = [
        url(r'^post_list',views.post_list,name ='post_list'),
        url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$',views.post_detail,name='post_detail'),
    ]
urlpatterns=[
url(r'^post\u list',views.post\u list,name='post\u list'),
url(r'^(?P\d{4})/(?P\d{2})/(?P\d{2})/(?P[-\w]+)/$”,视图。post\u detail,name='post\u detail'),
]

到目前为止,我猜您想要解析
域/年/月/日/slug
URL

以下更改将使其正常工作

views.py

from django.shortcuts import render , get_object_or_404 
from .models import Post

def post_list(request):
    post = Post.objects.all()
    return render(request,'blog/post/list.html',{'post':post})

def post_detail(request,slug,year, month,day,post):
    post = get_object_or_404(Post, slug = slug , status = 'published' ,publish_year = year, publish_month = month , publish_day = day)
    return render(request,'blog/post/detail.html',{'post':post})
def post_detail(request,slug,year, month,day):
    post = get_object_or_404(Post, slug = slug , status = 'published' ,publish__year = year, publish__month = month , publish__day = day)
    return render(request,'blog/post/detail.html',{'post':post})
url.py

urlpatterns = [
        url(r'^post_list',views.post_list,name ='post_list'),
        url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$',views.post_detail,name='post_detail'),
    ]
urlpatterns=[
url(r'^post\u list',views.post\u list,name='post\u list'),
url(r'^(?P\d{4})/(?P\d{2})/(?P\d{2})/(?P[-\w]+)/$”,视图。post\u detail,name='post\u detail'),
]

将您的html发布到您在列表页面中有详细信息页面的位置添加了它。请检查它。将list.html添加到您要传递给
post\u detail
视图的
post\u detail
是什么?将它添加到-@exprator将您的html发布到您在列表页面中有详细信息页面的位置添加了它。请检查它。将list.html添加到wh您正在传递到
post\u detail
视图的是
post\u detail
吗?添加了它-@ExpratorThanks,但我想知道post\u detail视图中post参数的用法,谢谢,但我想知道post\u detail视图中post参数的用法,