[英]How can I run different actions from one view in django pushing two different buttons at HTML page
我有帶有 2 個按鈕的 html 頁面。 我想打開一個引導模式 window 我可以在“照片”按鈕上加載照片點擊,另一個引導程序 window 在“視頻”按鈕上加載視頻點擊。 我在谷歌上找,但我沒有找到解決方案。
我嘗試在 wiew.py 中使用此代碼“如果 request.POST 中的'照片':做 somthing”,以及“如果 request.POST.get('Photo') == 'Photo': do somthing”
視圖.py
def make_post(request):
if request.POST.get('Photo') == 'Photo':
if request.method == 'POST':
form = InstagramPhotoForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('success_send')
else:
form = InstagramPhotoForm()
return render(request, 'createinstagrampost/createinstagrampost.html', {'photoform' : form})
else:
if request.method == 'POST':
form = InstagraVideoForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('success_send')
else:
form = InstagramVideoForm()
return render(request, 'createinstagrampost/createinstagrampost.html', {'videoform': form})
創建instagrampost.html
<form>
{% csrf_token %}
<div>
<button class="btn btn-success" type="button" data-toggle="modal" data-target="#modal-1" name="photo" value="Photo"></button>
</div>
<br>
<div>
<button class="btn btn-success" type="button" data-toggle="modal" data-target="#modal-2" name="video" value="Video"></button>
</div>
<br>
</form>
<div class="modal fade" id="modal-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class='modal-title'>Make photo post</h4>
<button class="close" type="button" data-dismiss="modal">×</button>
</div>
<div class="modal-body">
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<fieldset class="form-group">
{{ photoform|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Update</button>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-danger" type="button" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modal-2">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class='modal-title'>Make video post</h4>
<button class="close" type="button" data-dismiss="modal">×</button>
</div>
<div class="modal-body">
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<fieldset class="form-group">
{{ videoform|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Update</button>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-danger" type="button" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
網址.py
urlpatterns = [
...
path('profile/createinstagrampost/', instagram_post.make_post, name='createinstagrampost'),
path('profile/success/', instagram_post.success_send, name = 'success_send'),
...
]
我發現當我詢問“POST 請求”是否包含按鈕“名稱”時,它什么也不返回。
任何人都可以幫我解決這個問題嗎? 那真的很有幫助。
非常感謝您的時間!
正如 marciks 首先提到的,您需要將method=POST
添加到<form>
以將請求作為 Post 發送並將type='submit'
添加到按鈕屬於:
<post method='POST' >
<button type='submit' ... >
.
</form>
那么您的按鈕名稱是“照片”,小寫字符不是“照片”。 所以試試:
def make_post(request):
if request.POST.get('photo') == 'Photo':
.
.
.
else:
.
.
您的觀點有點混亂。當您在瀏覽器中輸入 url 時,它將對該 url 發出 GET 請求,因此您想先“閱讀”此 get 請求:
if request.POST.get('Photo') == 'Photo':
if request.method == 'POST':
form = InstagramPhotoForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('success_send')
return render(request, 'createinstagrampost/createinstagrampost.html', {'photoform' : form})
由於第一個請求是 GET,它會跳過第一個 if 並返回模板。 然后在 forms 中,當用戶向同一個視圖發布內容時,這將是一個“POST”請求。這一次,第一個 if 中的代碼將運行並且您的表單將被保存
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.