Django 未达到 Class 表单上的视图 post
Django not hitting Class Views on Form post
在我看来,出于某种原因,它会跳过基于 CheckbackView
class 的视图,并使用我的空表单重新呈现同一页面。
thunderdome/Views
class SquirrelView(View):
def post (self, request):
form = request.POST.get("thundersubmit", "")
if form == '1':
request.session["_thundersubmit"] = 'Pool'
return HttpResponseRedirect('Bartertown')
if form == '2':
request.session["_thundersubmit"] = 'Paste'
return HttpResponseRedirect('Bartertown')
if form == '3':
request.session["_thundersubmit"] = 'Upload'
return HttpResponseRedirect('Bartertown')
return HttpResponseRedirect('home')
def Bartertown(request):
statusly = request.session.get('_thundersubmit')
print statusly
if statusly == 'Paste':
render(request, 'thunderdome/paste_form.html')
return HttpResponse(statusly)
class CheckbackView(View):
print 'Hello - Fom Checkback'
def post(self, request):
return HttpResponse('Ha!')
^^^ 完全跳过 CheckbackView
post 视图并使用空表单重新呈现同一页面,而不是 return HttpResponse('Ha!')
.
网址
from datetime import datetime
from django.conf.urls import patterns, url
from app.forms import BootstrapAuthenticationForm
from thunderdome.views import SquirrelView, Bartertown, CheckbackView
# Uncomment the next lines to enable the admin:
from django.conf.urls import include
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
url(r'^$', 'app.views.home', name='home'),
url(r'^contact$', 'app.views.contact', name='contact'),
url(r'^about', 'app.views.about', name='about'),
url(r'^Thunderdome', include('thunderdome.urls')),
url(r'^Thunderdome/squirrel', SquirrelView.as_view()),
url(r'^Thunderdome/Bartertown', 'thunderdome.views.Bartertown'),
url(r'^Thunderdome/Bartertown/checkback', CheckbackView.as_view()),
thunderdome/paste_form.html
<form class="form-horizontal" action="/Thunderdome/Bartertown/checkback/" method="POST">
<fieldset>
<legend>Paste-A-Config</legend>
<div class="form-group">
<div class="col-md-12">
<textarea class="form-control" placeholder="Paste here..." rows="25" name="ConfigSubmit"></textarea>
</div>
</div>
</fieldset>
<div class="form-actions">
<div class="row">
<div class="col-md-12">
<button class="btn btn-default" type="submit">
Cancel
</button>
<button class="btn btn-primary" type="submit">
<i class="fa fa-save"></i>
Submit
</button>
WSGI 端:
[Mon Feb 09 08:48:50 2015] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_wsgi/3.5 Python/2.7.9 configured -- resuming normal operations
为什么会这样?
您需要终止 URL 正则表达式。 r'^Thunderdome/Bartertown'
也匹配 "Thunderdome/Bartertown/anythingyoulike",这包括您的 "checkback" URL。您应该始终终止模式:
url(r'^Thunderdome/squirrel/$', SquirrelView.as_view()),
url(r'^Thunderdome/Bartertown/$', 'thunderdome.views.Bartertown'),
url(r'^Thunderdome/Bartertown/checkback/$', CheckbackView.as_view()),
在我看来,出于某种原因,它会跳过基于 CheckbackView
class 的视图,并使用我的空表单重新呈现同一页面。
thunderdome/Views
class SquirrelView(View):
def post (self, request):
form = request.POST.get("thundersubmit", "")
if form == '1':
request.session["_thundersubmit"] = 'Pool'
return HttpResponseRedirect('Bartertown')
if form == '2':
request.session["_thundersubmit"] = 'Paste'
return HttpResponseRedirect('Bartertown')
if form == '3':
request.session["_thundersubmit"] = 'Upload'
return HttpResponseRedirect('Bartertown')
return HttpResponseRedirect('home')
def Bartertown(request):
statusly = request.session.get('_thundersubmit')
print statusly
if statusly == 'Paste':
render(request, 'thunderdome/paste_form.html')
return HttpResponse(statusly)
class CheckbackView(View):
print 'Hello - Fom Checkback'
def post(self, request):
return HttpResponse('Ha!')
^^^ 完全跳过 CheckbackView
post 视图并使用空表单重新呈现同一页面,而不是 return HttpResponse('Ha!')
.
网址
from datetime import datetime
from django.conf.urls import patterns, url
from app.forms import BootstrapAuthenticationForm
from thunderdome.views import SquirrelView, Bartertown, CheckbackView
# Uncomment the next lines to enable the admin:
from django.conf.urls import include
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
url(r'^$', 'app.views.home', name='home'),
url(r'^contact$', 'app.views.contact', name='contact'),
url(r'^about', 'app.views.about', name='about'),
url(r'^Thunderdome', include('thunderdome.urls')),
url(r'^Thunderdome/squirrel', SquirrelView.as_view()),
url(r'^Thunderdome/Bartertown', 'thunderdome.views.Bartertown'),
url(r'^Thunderdome/Bartertown/checkback', CheckbackView.as_view()),
thunderdome/paste_form.html
<form class="form-horizontal" action="/Thunderdome/Bartertown/checkback/" method="POST">
<fieldset>
<legend>Paste-A-Config</legend>
<div class="form-group">
<div class="col-md-12">
<textarea class="form-control" placeholder="Paste here..." rows="25" name="ConfigSubmit"></textarea>
</div>
</div>
</fieldset>
<div class="form-actions">
<div class="row">
<div class="col-md-12">
<button class="btn btn-default" type="submit">
Cancel
</button>
<button class="btn btn-primary" type="submit">
<i class="fa fa-save"></i>
Submit
</button>
WSGI 端:
[Mon Feb 09 08:48:50 2015] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_wsgi/3.5 Python/2.7.9 configured -- resuming normal operations
为什么会这样?
您需要终止 URL 正则表达式。 r'^Thunderdome/Bartertown'
也匹配 "Thunderdome/Bartertown/anythingyoulike",这包括您的 "checkback" URL。您应该始终终止模式:
url(r'^Thunderdome/squirrel/$', SquirrelView.as_view()),
url(r'^Thunderdome/Bartertown/$', 'thunderdome.views.Bartertown'),
url(r'^Thunderdome/Bartertown/checkback/$', CheckbackView.as_view()),