Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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 基于URL和django类的视图_Python_Django_Django Views_Django Urls - Fatal编程技术网

Python 基于URL和django类的视图

Python 基于URL和django类的视图,python,django,django-views,django-urls,Python,Django,Django Views,Django Urls,这是我在django(1.4)中使用基于类的视图完成的第一个项目,我在基于日期的归档文件不返回URL方面遇到了一些问题。我已经在我的项目(一个公司内部网)中成功构建了几个不需要它们的应用程序,但网站的“新闻”部分确实需要一个基于日期的存档 年、月、日档案似乎都运行良好,但我的个人文章没有生成我认为应该生成的URL。我很确定问题出在models.py中的get_absolute_url函数中,因为如果我键入url,我希望他们直接让django找到并显示我想要的文章 从shell调用get_abso

这是我在django(1.4)中使用基于类的视图完成的第一个项目,我在基于日期的归档文件不返回URL方面遇到了一些问题。我已经在我的项目(一个公司内部网)中成功构建了几个不需要它们的应用程序,但网站的“新闻”部分确实需要一个基于日期的存档

年、月、日档案似乎都运行良好,但我的个人文章没有生成我认为应该生成的URL。我很确定问题出在models.py中的get_absolute_url函数中,因为如果我键入url,我希望他们直接让django找到并显示我想要的文章

从shell调用get_absolute_url函数我得到:

NoReverseMatch: Reverse for 'news_detail' with arguments '('2013', 'Jan', '14', 'another-news-thang')' and keyword arguments '{}' not found.
我已经阅读了有关的手册和具体参考资料,但我不能完全理解我的错误所在

My models.py是:

from django.db import models
import datetime
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from phone_list.models import Person, Team
from tinymce import models as tinymce_models
from taggit.managers import TaggableManager
from easy_thumbnails.fields import ThumbnailerImageField

class LiveNewsManager(models.Manager):
    def get_query_set(self):
        return super(LiveNewsManager, self).get_query_set().filter(status=self.model.LIVE_STATUS)

class News(models.Model):
    LIVE_STATUS=1
    DRAFT_STATUS=2
    HIDDEN_STATUS=3
    STATUS_CHOICES=(
        (LIVE_STATUS, 'Live'),
        (DRAFT_STATUS, 'Draft'),
        (HIDDEN_STATUS, 'Hidden'),
    )

    # core fields
    headline=models.CharField(max_length=250)
    image = ThumbnailerImageField(
        upload_to='news_images',
        resize_source=dict(size=(700, 500), sharpen=True),
        null=True,
        blank=True,
        help_text = "Optional. Photographs added here are given 'feature' status and should be landscape oriented.",
    )
    image_caption=models.CharField(
        max_length=144,
        blank=True,
        help_text = "DO NOT ADD IF THERE IS NO FEATURE IMAGE",
    )
    story = tinymce_models.HTMLField()
    pub_date=models.DateTimeField(default=datetime.datetime.now)

    # metadata
    writer=models.ForeignKey(Person)
    enable_comments=models.BooleanField(default=True)
    featured=models.BooleanField(default=False)
    slug=models.SlugField(unique_for_date='pub_date')
    status=models.IntegerField(choices=STATUS_CHOICES, default=LIVE_STATUS)

    # categorization
    tags=TaggableManager()

    objects=models.Manager()
    live=LiveNewsManager()

    class Meta:
        verbose_name_plural='News articles'
        ordering=['-pub_date']

    def pictures(self):
        try:
            return [self.image]
        except:
            pass

    def get_absolute_url(self):
        return reverse ('news_detail', args = [str(self.pub_date.strftime("%Y")), str(self.pub_date.strftime("%b")), str(self.pub_date.strftime("%d")), str(self.slug)])

    def __unicode__(self):
        return self.headline
我的URL.py是:

from django.conf.urls import patterns, include, url
from haystack.forms import ModelSearchForm
from haystack.query import SearchQuerySet
from haystack.views import SearchView
from django.views.generic import ArchiveIndexView, YearArchiveView, MonthArchiveView, DayArchiveView, DateDetailView
from datetime import date
from news.models import News

sqs = SearchQuerySet().models(News)

urlpatterns = patterns('',
    url(r'^$', ArchiveIndexView.as_view(
        date_field = 'pub_date',
        model=News,
        context_object_name="latest_news",),
        ),
    url(r'^(?P<year>\d{4})/$', YearArchiveView.as_view(
        date_field = 'pub_date',
        model=News,
        context_object_name="year_archive",),
        ),
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/$', MonthArchiveView.as_view(
        date_field = 'pub_date',
        model=News,
        context_object_name="month_archive",),
        ),
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$', DayArchiveView.as_view(
        date_field = 'pub_date',
        model=News,
        context_object_name="day_archive",),
        ),
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$', DateDetailView.as_view(
        date_field = 'pub_date',
        model=News,
        context_object_name="news_detail",),
        ),
    url(r'^search/$', SearchView(
        template='news/search.html',
        searchqueryset=sqs,
    ), name='haystack_search'),
)
从django.conf.url导入模式,包括,url
从haystack.forms导入ModelSearchForm
从haystack.query导入SearchQuerySet
从haystack.views导入SearchView
来自django.views.generic import ArchiveIndexView、YearArchiveView、MonthArchiveView、dayaarchiveview、DateDetailView
起始日期时间导入日期
从news.models导入新闻
sqs=SearchQuerySet().models(新闻)
urlpatterns=模式(“”,
url(r'^$',ArchiveIndexView.as_视图(
日期字段='发布日期',
模型=新闻,
context\u object\u name=“最新消息”,
),
url(r'^(?P\d{4})/$,YearArchiveView.as_视图(
日期字段='发布日期',
模型=新闻,
context\u object\u name=“year\u archive”,),
),
url(r'^(?P\d{4})/(?P\w{3})/$”,MonthArchiveView.as_视图(
日期字段='发布日期',
模型=新闻,
context\u object\u name=“month\u archive”,),
),
url(r'^(?P\d{4})/(?P\w{3})/(?P\d{2})/$”,DayArchiveView.as_视图(
日期字段='发布日期',
模型=新闻,
context_object_name=“day_archive”,),
),
url(r'^(?P\d{4})/(?P\w{3})/(?P\d{2})/(?P[-\w]+)/$”,DateDetailView.as_视图(
日期字段='发布日期',
模型=新闻,
context\u object\u name=“news\u detail”,),
),
url(r“^search/$”,SearchView(
template='news/search.html',
searchqueryset=sqs,
),name='haystack_search'),
)

抱歉,代码有点乱;一旦我让它们工作起来,我就会把它们清理干净。非常感谢您的帮助。

这里没有您的URL名称

如果未在某个地方定义,则无法反转
news\u detail

   url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$',       
      DateDetailView.as_view(
        date_field = 'pub_date',
        model=News,
        context_object_name="news_detail",),
        ),
       name='news_detail'),  #<--- you're missing this
url(r'^(?P\d{4})/(?P\w{3})/(?P\d{2})/(?P[-\w]+)/$”,
DateDetailView.as\u视图(
日期字段='发布日期',
模型=新闻,
context\u object\u name=“news\u detail”,),
),

name='news_detail'),#这里没有你的URL名称

如果未在某个地方定义,则无法反转
news\u detail

   url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$',       
      DateDetailView.as_view(
        date_field = 'pub_date',
        model=News,
        context_object_name="news_detail",),
        ),
       name='news_detail'),  #<--- you're missing this
url(r'^(?P\d{4})/(?P\w{3})/(?P\d{2})/(?P[-\w]+)/$”,
DateDetailView.as\u视图(
日期字段='发布日期',
模型=新闻,
context\u object\u name=“news\u detail”,),
),

name='news_detail'),#太好了,我知道事情会像这样简单。谢谢。太好了,我就知道会是这么简单。谢谢