2014-02-11 57 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的。 –