V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
budong
V2EX  ›  问与答

有关django同用视图的问题?

  •  
  •   budong · 2012-09-27 19:39:18 +08:00 · 3872 次点击
    这是一个创建于 4473 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近看到django通用视图部分(http://djangobook.py3k.cn/2.0/chapter11/),做到这一步;

    说明我的project名--generic,book-app是generic/generic/book

    #model.py,之前例子中Publisher的定义(generic/generic/book/model.py)
    class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

    def __unicode__(self):
    return self.name

    #urls.py 在generic/generic/urls.py
    from django.conf.urls.defaults import *
    from django.views.generic import list_detail
    from mysite.books.models import Publisher
    publisher_info = {
    'queryset': Publisher.objects.all(),
    'template_name': 'publisher_list_page.html',
    }
    urlpatterns = patterns('',
    url(r'^publishers/$', list_detail.object_list, publisher_info),
    )


    模板在generic/templates下,generic/templatespublisher_list_page.html
    publisher_list_page.html
    <h2>Publishers</h2>
    <ul>
    {% for publisher in object_list %}
    <li>{{ publisher.name }}</li>
    {% endfor %}
    </ul>

    浏览器请求ocalhost:8000/publishers,但是页面一直显示:
    Page not found (404)
    Request Method: GET
    Request URL: http://localhost:8000/publishers
    Using the URLconf defined in generic.urls, Django tried these URL patterns, in this order:
    1.^about/$
    2.^publishers/$
    The current URL, publishers, didn't match any of these.
    You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
    6 条回复    1970-01-01 08:00:00 +08:00
    ivanlw
        1
    ivanlw  
       2012-09-28 10:18:15 +08:00   ❤️ 1
    什么版本的django?我看了我的url.py里面下urlpatterns元祖的元素都是(),(),().....而不是url(),url(),url().......

    debug页面都告诉你连这个url都识别不出来了……
    budong
        2
    budong  
    OP
       2012-09-28 16:23:44 +08:00
    @ivanlw
    1.4版本的,我也很郁闷为什么不能识别这个url。。。照着教程来的,不知到那个地方错了。
    budong
        3
    budong  
    OP
       2012-09-29 09:14:32 +08:00
    问题已解决:访问时像这样 http://localhost:8000/publishers/在后面加一个/就行了。
    但是为什么会是这样,我还在思考中,如果你知道请告诉我。
    kojp
        4
    kojp  
       2012-09-29 09:23:42 +08:00
    上面没看完。
    但只看这条的话。
    ^publishers/$
    你尝试改成
    ^publishers$

    应该不能达成你第一个要求了。有时间的话,建议把正则的相关的几本书给他啃掉。
    不一定要会写得多牛逼,但至少要知道各处修饰符的意义。
    shen0956
        5
    shen0956  
       2012-09-29 10:42:02 +08:00
    ^publishers/$
    建议改成
    ^publishers/?$
    就是有无/都可以访问
    你要多了解下正则表达式啊....
    Danfi
        6
    Danfi  
       2012-09-29 16:17:39 +08:00
    可能和这个有关吧
    https://docs.djangoproject.com/en/dev/ref/settings/#append-slash
    CommonMiddleware 没启用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1006 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:54 · PVG 05:54 · LAX 13:54 · JFK 16:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.