2014-02-11 33 views
0

我在我的django应用程序中路由有一些问题。Django动态页面功能和url

问题: 有一些动态的网站和网站管理员可以创建随机地址的网页。例如,他可以创建一个URL为“company/news”或“store/news”的新闻页面。或者,他可以使用url“feedback”或“user/feedback”的反馈形式创建页面。

因此,Django需要抓住这个要求,并为这些页面显示适当的新闻或反馈内容。如何根据请求的页面功能将用户请求路由到适当的视图?

回答

1

您可以创建解析URL并为不同类型选择策略的视图。

# urls.py 
... 
url(r'^dynamic-view/(?P<dynamic_view_url>.*)/$', 'dynamic_view') 


# views.py 
def dynamic_view(request, dynamic_view_url): 
    url_parts = [p for p in dynamic_view_url.split("/") if p] 
    if "feedback" in url_parts: 
     return _view_for_feedback(request, url_parts) 
    elif "news" in url_parts: 
     return _view_for_news(request, url_parts) 
    else: 
     raise Http404 
+1

谢谢,但我找到了另一种解决方案。我从我的数据库中获取所有页面url并在我的url配置中动态分配url规则:modules = PageHelpers()。get_available_modules() urlpatterns = patterns('', url(r'^ $','app.home 。'), *((''%s /'%mod ['url'],include('app。%s.urls'%mod ['module_char_id']))) )+静态(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT) –

+0

如果数据库发生变化,您是否重新启动django并且需要新版本的urlpatterns? –

+0

是的,使用这种方法时,每当数据库中的URL模式更改时,都需要重新启动应用程序。实际上,我现在不使用这种方法,Django不是关于动态URL的。 –