我試圖創建一個系統,某些頁面無法訪問,除非請求來自特定的位置。我目前有一切工作,除了在檢查位置並且請求被重定向到下一個視圖之後,下一個視圖的表單不能正確發佈。它仍在嘗試發佈位置數據表單。在Django中重定向後發佈的方法不工作
你會明白我的意思更在我views.py
:
def add(request):
if request.method == 'POST':
form = StudentModelForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/')
else:
form = StudentModelForm()
context_data = {'form': form}
return render(request, 'add.html', context_data)
def location_check_add(request):
if request.method == 'POST' and 'lat' in request.POST:
user_lat = request.POST.get('lat')
user_lon = request.POST.get('lon')
if good_location(user_lat,user_lon):
return add(request)
else:
return render(request, 'location.html')
return render(request, 'checking.html')
所以我想重定向到add()
視圖如果good_location
是真實的。它重定向正確,但當用戶試圖張貼表格時012jdjango認爲它再次提交location_check_add
中的表單。
編輯:添加urls.py
參考
import users.views
urlpatterns = patterns('',
url(r'^$', users.views.index, name = 'index'),
url(r'^admin/', include(admin.site.urls)),
url(r'^add/', users.views.location_check_add, name = 'add'),
)
現在我擁有它,以便我的網站com/addd url指向app.views.location_check_add。因此,當我嘗試「返回重定向('add')時,它將我帶回到位置檢查頁面。我現在這樣使用,所以有人無法在瀏覽器中輸入website.com/add並跳到」添加「。 html「沒有位置檢查,有沒有更好的方法來設置它?我將我的urls.py添加到原始問題以供參考 –
而不是調用users.views.location_check_add URL添加/你可以只有一個視圖中,你首先檢查視圖內的位置的有效性,然後顯示內容,如果有效,否則不顯示內容或重定向到另一個錯誤頁面或其他東西!! –
@ManjunathSatyamurthy所以我試過你的建議,因爲它看起來像最好的方式去在這種情況下,但我仍然得到同樣的錯誤,第一次POST(在這種情況下,座標形式)繼續提交,即使它應該是add()形式。我認爲這是因爲第一個請求.POST正在被轉發到下一個視圖,而不是像正確的重定向那樣的全新請求。 –