2013-11-22 95 views
1

Django1.6,有沒有辦法將動態參數傳遞到我的視圖或URL,而無需解析URL?Django的URL /視圖額外的參數

理想我想一個urls.py,看起來像:

url(r'^dash/$', 
    dash_view.account_modify, 
    {'account': **dynamic_account_identifier_here**} 
    name='dash_account_modiy') 

而且在views.py:

def account_modify(request, account, 
        template_name='profile.html, 
        change_form=AccountModifyForm): 
    ... 

:PARAM帳戶:
來自模型:

class Dash(models.Model): 
    name = models.Charfield() 
    account = models.IntegerField() 
    .... 

基本上,我真的想避免使用帳戶標識符的urls.py作爲字符串的一部分,如:

url(r'^dash/(?P<account>\w+)/$', 
    dash_view.account_modify, 
    name='dash_account_modiy') 

上如何可以從模板這些值傳遞到處理視圖在AccountModifyForm(其期望的賬戶「參數)的使用任何建議?

回答

3
url(r'^dash/$', 
    dash_view.account_modify, 
    {'account': **dynamic_account_identifier_here**} 
    name='dash_account_modify') 

您不能動態評估那裏的任何內容,因爲當加載URL conf時,字典僅評估一次。

如果你想從一個視圖到另一個你三個選項傳遞的信息是:

    的URL,你似乎並不想做
  • GET或POST數據
  • 其存儲在一個視圖中的會話,並在接下來的
+0

是啊......只是想通了這一點...感謝指針仍。有一點點時間。 – parsenz

+0

很高興你知道了:) – Alasdair

1

從會話檢索如果有人關心......想通了......

在模板:

{% for dash in dashes %} 
    blah blah blah 
    <form action="..." method="POST"> 
     <input type="hidden" name="id" value="{{ dash.account }}"> 
     {{ form.as_ul }} 
     <input type="submit" value="Do stuff"> 
    </form> 
{% endfor %} 

在訪問量:

if request.method == 'POST' 
    account = request.POST['id'] 
    # be sure to include checks for the validity of the POST information 
    # e.g. confirm that the account does indeed belong to whats-his-face 
    form = AccountModifyForm(request.POST, account, 
          user=request.user) 
    .... 
+0

請注意,用戶可以修改隱藏字段的值並編輯任何帳戶,這在某些情況下可能是安全問題。 – Alasdair