django Web应用程序中的URL散列

时间:2014-05-02 09:14:59

标签: python django url dictionary

如果用户的网址类型模式已确定,例如,

1. myurl.com/feeds/recnets/

2. myurl.com/feeds/users/

3. myurl.com/feeds/tags/

4. myurl.com/feeds/~

我想创建一个字典来传递这些模式中的特定功能。

所以我在 urls.py 中创建了一个字典类型并传递了它的字典参数。 (见下文)

 1 import os.path
 2 from django.conf.urls import patterns, include, url
 3 from bookmarks.views import *
 4 from django.contrib import admin
 5 from django.views.generic import TemplateView
 6 from bookmarks.feeds import *
 7 
 8 admin.autodiscover()
 9 
 10 site_media = os.path.join(
 11         os.path.dirname(__file__), 'site_media'
 12 )
 13 
 14 feeds = {
 15     'recents' : RecentBookmarks(),
 16     'user' : UserBookmarks()
 17 }
 18 
 19 urlpatterns = patterns('',
 20     # Feeds 
 21     (r'^feeds/(?P<url>.*)$',
 22         feeds),

正如我所预料的,它不起作用,因为 urls.py 没有区分参数的名称。

我还提到了django项目文档来解决这个问题,但是我找不到如何将哈希参数传递给url端的函数。

2 个答案:

答案 0 :(得分:1)

项目文件夹中的

:根据Django 1.6 urls.py

from django.conf.urls import include, url
from bookmarks import *

urlpatterns = [
    # ... snip ...

    url(r'^feeds/', include('bookmarks.urls')),
    # ... snip ...
]

在书签文件夹中创建文件urls.py

from bookmarks import *

from django.conf.urls import url

urlpatterns = [
    url(r'^recents/$', 'bookmarks.view.RecentBookmarks'),
    url(r'^user/$', 'bookmarks.view.UserBookmarks'),
   #so on for all the urls
]

注意:如果导入错误,请随意编辑代码

答案 1 :(得分:1)

进一步阐述以上答案。

在每个应用文件夹&ur ;. urls.py文件中保留应用专用网址总是更好。然后,您可以在根urls.py文件中包含每个应用的网址。

e.g

Project/
  -- urls.py   # Root urls.py
  -- app1/
     --- urls.py   # App specific urls.py
  -- app2/
     --- urls.py

每个网址都应该有自己的模式并且与视图相关,例如

### app1/urls.py ###    
urlpatterns = (
        url(r'^recents/$', RecentBookmarks.as_view()),
       # Samefor all the urls
    )

有关包括网址格式的详情,请参阅此处:https://docs.djangoproject.com/en/1.6/topics/http/urls/#including-other-urlconfs

要进一步学习,您还可以在此处查看如何使用网址名称间距https://docs.djangoproject.com/en/1.6/intro/tutorial03/#namespacing-url-names