如果用户的网址类型模式已确定,例如,
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端的函数。
答案 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