gpt4 book ai didi

python - 带有 webmonkey 教程的 Django 中的 URL 模式问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:44 28 4
gpt4 key购买 nike

我一直在学习 Django webmonkey 教程,目前我还停留在第 4 课中 http://www.webmonkey.com/2010/02/Use_Templates_in_Django/ .

我的问题是博客详细信息模板,每当我单击我的 blog/list.html 页面上的链接以查看条目的详细信息时,我都会收到找不到页面 (404) 的消息。

这正是我看到的错误:

Page not found (404)
Request Method: GET
Request URL:http://127.0.0.1:8000/2010/dec/17/welcome-my-blog/

Using the URLconf defined in djangoblog.urls, Django tried these URL patterns, in this order:

^admin/(.*)
^blog/
^tags/(?P<slug>[a-zA-Z0-9_.-]+)/$
The current URL, 2010/dec/17/welcome-my-blog/, didn't match any of these.

这些是我的 url.py 文件和我的 models.py,我没有发布我的管理、标签 View 或设置,但如果有帮助我可以。

djangoblog\urls.py

# This also imports the include function
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
(r'^admin/(.*)', admin.site.root),
(r'^blog/', include('djangoblog.blog.urls')),
(r'^tags/(?P<slug>[a-zA-Z0-9_.-]+)/$', 'djangoblog.tag_views.tag_detail'),
)

djangoblog\blog\urls.py

from django.conf.urls.defaults import *
from djangoblog.blog.models import Entry
from tagging.views import tagged_object_list

info_dict = {
'queryset': Entry.objects.filter(status=1),
'date_field': 'pub_date',
}

urlpatterns = patterns('django.views.generic.date_based',
(r'(?P<year>d{4})/(?P<month>[a-z]{3})/(?P<day>w{1,2})/(?P<slug>[-w]+)/$',
'object_detail', dict(info_dict, slug_field='slug',template_name='blog/detail.html')),
(r'^(?P<year>d{4})/(?P<month>[a-z]{3})/(?P<day>w{1,2})/(?P<slug>[-w]+)/$',
'object_detail', dict(info_dict, template_name='blog/list.html')),
(r'^(?P<year>d{4})/(?P<month>[a-z]{3})/(?P<day>w{1,2})/$',
'archive_day',dict(info_dict,template_name='blog/list.html')),
(r'^(?P<year>d{4})/(?P<month>[a-z]{3})/$','archive_month', dict(info_dict, template_name='blog/list.html')),
(r'^(?P<year>d{4})/$','archive_year', dict(info_dict, template_name='blog/list.html')),
(r'^$','archive_index', dict(info_dict, template_name='blog/list.html')),
)

djangoblog\blog\models.py

from django.db import models
from django.contrib.syndication.feeds import Feed
from django.contrib.sitemaps import Sitemap
import markdown
from tagging.fields import TagField
from tagging.models import Tag

class Entry(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(
unique_for_date='pub_date',
help_text='Automatically built from the title.'
)

body_html = models.TextField(blank=True)
body_markdown = models.TextField()
pub_date = models.DateTimeField('Date published')
tags = TagField()
enable_comments = models.BooleanField(default=True)

PUB_STATUS = (
(0, 'Draft'),
(1, 'Published'),
)

status = models.IntegerField(choices=PUB_STATUS, default=0)


class Meta:
ordering = ('-pub_date',)
get_latest_by = 'pub_date'
verbose_name_plural = 'entries'

def __unicode__(self):
return u'%s' %(self.title)

def get_absolute_url(self):
return "/%s/%s/" %(self.pub_date.strftime("%Y/%b/%d").lower(), self.slug)

def save(self):
self.body_html = markdown.markdown(self.body_markdown, safe_mode = False)
super(Entry, self).save()

def get_previous_published(self):
return self.get_previous_by_pub_date(status__exact=1)

def get_next_published(self):
return self.get_next_by_pub_date(status__exact=1)

def get_tags(self):
return Tag.objects.get_for_object(self)

如果有任何其他文件可以提供帮助,我可以提供。我的文件结构如下:

文件结构

C:\Workspaces\python\djangoblog

urls.py
tag_views.py
settings.py
manage.py
djangoblog.db
admin.py
__init__.py

templates

blog
detail.html
list.html

tags
detail.html (empty)
list.html (empty)

base.html

tagging

markdown

blog

__init__.py
admin.py
models.py
tests.py
urls.py
views.py

编辑:(来自对 Josh 回答的评论)

404 在:blog/dec/17/welcome-my-blog/:

^admin/(.*) 
^blog/ (?P<year>d{4})/(?P<month>[a-z]{3})/(?P<day>w{1,2})/(? P<slug>[-w]+)/$
^blog/ ^(?P<year>d{4})/(?P<month>[a-z]{3})/(?P<day>w{1,2})/(? P<slug>[-w]+)/$
^blog/ ^(?P<year>d{4})/(?P<month>[a-z]{3})/(?P<day>w{1,2})/$
^blog/ ^(?P<year>d{4})/(?P<month>[a-z]{3})/$
^blog/ ^(?P<year>d{4})/$
^blog/
^$ ^tags/(?P<slug>[a-zA-Z0-9_.-]+)/$
The current URL, blog/2010/dec/17/welcome-my-blog/, didn't match any of these.

最佳答案

问题是您的 URL 模式都不匹配浏览器中的 URL。

http://127.0.0.1:8000/2010/dec/17/welcome-my-blog/

是您要访问的 URL。我假设这是一个博客条目,可通过 URL blog/ 访问。

您的根 URL 模式如下:

urlpatterns = patterns('',
(r'^admin/(.*)', admin.site.root),
(r'^blog/', include('djangoblog.blog.urls')),
(r'^tags/(?P[a-zA-Z0-9_.-]+)/$', 'djangoblog.tag_views.tag_detail'),
)

这意味着它们都不匹配您在浏览器中的 URL,因为它不是以 adminblogtags 开头。

以下 URL 可能会解决您的问题:

http://127.0.0.1:8000/blog/2010/dec/17/welcome-my-blog/

注意 IP:Port 后面的 /blog/。这将匹配根 URL conf 中的 blog/ 条目。然后由您的 djangoblog.blog.urls 文件来处理模式的其余部分,看起来确实如此。

(r'(?Pd{4})/(?P[a-z]{3})/(?Pw{1,2})/(?P[-w]+)/$', 'object_detail', dict(info_dict, slug_field='slug',template_name='blog/detail.html'))

上面的模式寻找:
- 4 个数字 (2010)
- 然后是/
- 然后是 3 个字母 (dec)
- 然后是/
- 然后是一个包含 1 或 2 个字符的单词 (17)
- 然后是/
- 然后一句话(欢迎我的博客)

在 IP:port 之后添加 /blog/ 应该没问题。

您的更新:

^blog/ (?P<year>d{4})/(?P<month>[a-z]{3})/(?P<day>w{1,2})/(? P<slug>[-w]+)/$ 

以上网址不正确。您需要在它前面加上 ^ 作为其他 URLS。

关于python - 带有 webmonkey 教程的 Django 中的 URL 模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4718047/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com