2016-09-29 65 views
0

我是Django開發人員的初學者,我正在嘗試製作食物日記應用程序。用戶在index.html上輸入他的電子郵件後,應根據他點擊的任何按鈕呈現另一個網頁。Django爲表單中的兩個提交按鈕呈現不同的模板

我可以添加兩個模板,但如果用戶手動鍵入有效的URL,例如/apps/<user_email>/addDiaryEntry/,我也希望我的應用程序能夠正常工作。我不知道要在/apps/urls.py中添加什麼。另外,我可以以某種方式訪問​​用戶對象的ID,以便我的路由URL變成/apps/<user_id>/addDiaryEntry/,而不是?

/templates/apps/index.html

<form method="post" action="/apps/"> 
{% csrf_token %} 

<label for="email_add">Email address</label> 
<input id="email_add" type="text"> 

<button type="submit" name="add_entry">Add entry</button> 
<button type="submit" name="see_history">See history</button> 

/apps/views.py

def index(request): 
    if request.POST: 
     if 'add_entry' in request.POST: 
      addDiaryEntry(request) 
     elif 'see_history' in request.POST: 
      seeHistory(request) 

    return render(request, 'apps/index.html'); 

def addDiaryEntry(request): 
    print ("Add entry") 

def seeHistory(request): 
    print ("See history") 

/apps/urls.py

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
] 

謝謝你的幫助!請隨意分享我沒有遵循的最佳做法。

回答

0

1)傳遞參數到一個url中,你可以使用regex組來傳遞參數。下面是一個使用kwarg一個例子:

url(r'^(?P<user_email>[^@][email protected][^@]+\.[^@]+)/addDiaryEntry/$', views.add_diary, name='add-diary-entry'), 

2)只呈現取決於不同的模板上按下按鈕:

def index(request): 
    if request.POST: 
     if 'add_entry' in request.POST: 
      addDiaryEntry(request) 
      return render(request, 'apps/add_entry.html'); 

     elif 'see_history' in request.POST: 
      seeHistory(request) 
      return render(request, 'apps/see_history.html'); 

它總是艱難的起步,要確保你投入的時間來請閱讀文檔,以下是一些有關這些主題的地方: https://docs.djangoproject.com/en/1.10/topics/http/urls/#named-groups https://docs.djangoproject.com/en/1.10/topics/http/views/

相關問題