0

我想在我的 Django 应用程序中处理我的网址。我已经阅读了很多文件,但我仍然不确定如何做得更好。我有两个问题:

  1. 如何为两个不同的网址调用相同的视图?我想调用 www.mysite.com 和 www.mysite.com/index.html 的主页视图

    (r'^$', 'myapp.main.views.home')
    (r'([-\w]+)$', 'myapp.main.views.home')
    

    上面的代码听起来不错,但当然会引发错误,因为主视图需要 1 个参数,但给出了 2 个参数。我该如何解决这个问题?

  2. 我有很多应用程序,它们都有自己的 urls.py 文件。我将它们处理为将它们的 urls 文件包含到根 urls.py 为

     (r'^warehouse/', include('myapp.warehouse.urls')),
    

这样,url 看起来像 www.mysite.com/warehouse/blabla/ 但是,我想将它们作为 www.mysite.com/warehouse_blabla.html 进行 slugifying 并不难,但我如何解析这样的 url 并将其重定向到仓库应用程序中的blabla视图?

谢谢

4

1 回答 1

1

关于第一个问题,您最好使用index.htmlURL 重定向(更适合 SEO 等)

from django.views.generic.simple import redirect_to

urlpatterns = patterns('',
    url(r'^$', 'myapp.main.views.home')
    url(r'^index.html$', redirect_to, {'url': '/'}),
)

关于第二个问题,您的urls.py文件只是一组正则表达式,因此您可以控制要使用的 URL 方案:

urlpatterns = patterns('',
    url(r'^warehouse_(?P<slug>[_w]+).html$', 'warehouse.views.warehouse_detail'),
)

也就是说,我认为你最好坚持通常的斜线约定

于 2012-09-21T14:04:45.217 回答