“No URL to redirect to”如何重定向到同一页面django
“No URL to redirect to” How to redirect to the same page django
我正在使用由用户填充的表单。 forms.py 的保存方法如下所示:
def save(self, commit=True):
instance = super(LocationForm, self).save(commit=False)
if instance.location_id:
instance.save()
else:
new_location=Location.objects.create(name=self.cleaned_data['name'])
instance.location=new_company
instance.save()
return instance
所以当我点击更新时,数据被保存在数据库中,但是我得到一个错误
No URL to redirect to error
观看次数:
class LandingView(CreateView):
model = Review
form_class = LocationForm
template_name="core/index.html"
models.py - 我创建了一个 get_absolute_url 函数
from django.core.urlresolvers import reverse
def get_absolute_url(self):
return reverse ('index', args=[str(self.id)])
所以在 url 年代我尝试了这个
url(r'^$', core.views.LandingView.as_view(success_url="success"), name='index'),
但是,如果我希望它被重定向到它的原始页面,我该怎么办,比如 'go back to where I came from' ?
我试过了
url(r'^$', core.views.LandingView.as_view(success_url=""), name='index'),
和
url(r'^$', core.views.LandingView.as_view(success_url=reverse('index')), name='index'),
和
url(r'^$', core.views.LandingView.as_view(success_url=reverse("")), name='index'),
但是 None 这些工作!
EDIT 这个 url 有效,我不需要 def_get_absolute_url
url(r'^$', core.views.LandingView.as_view(success_url="/"), name='index'),
我确信有一种方法可以在像您这样的基于 Class 的视图中进行重定向,但我会这样做,只要保存表单,然后它就会重定向。如果是的话,你的保存方法是否有效我喜欢你这样做的方式,但我不确定编辑你的保存方法是否是最好的方法,而不是在你的视图中获取实例,用数据预填充表单已经在初始创建表单中提交了 say。任何其他问题让我知道。
views.py
from app.forms import LocationForm
def Landing_View(request)
if request.method == 'POST':
form = LocationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/your_url/')
else:
print form.errors()
else:
form = LocationForm()
return render (request, 'template.html', {'form':form},)
urls.py - URL 对应 Landing_View,然后我会在保存
时将您重定向回此 URL
url(r'^your_url/', app.views.Landing_View, name='your_url'),
我正在使用由用户填充的表单。 forms.py 的保存方法如下所示:
def save(self, commit=True):
instance = super(LocationForm, self).save(commit=False)
if instance.location_id:
instance.save()
else:
new_location=Location.objects.create(name=self.cleaned_data['name'])
instance.location=new_company
instance.save()
return instance
所以当我点击更新时,数据被保存在数据库中,但是我得到一个错误
No URL to redirect to error
观看次数:
class LandingView(CreateView):
model = Review
form_class = LocationForm
template_name="core/index.html"
models.py - 我创建了一个 get_absolute_url 函数
from django.core.urlresolvers import reverse
def get_absolute_url(self):
return reverse ('index', args=[str(self.id)])
所以在 url 年代我尝试了这个
url(r'^$', core.views.LandingView.as_view(success_url="success"), name='index'),
但是,如果我希望它被重定向到它的原始页面,我该怎么办,比如 'go back to where I came from' ?
我试过了
url(r'^$', core.views.LandingView.as_view(success_url=""), name='index'),
和
url(r'^$', core.views.LandingView.as_view(success_url=reverse('index')), name='index'),
和
url(r'^$', core.views.LandingView.as_view(success_url=reverse("")), name='index'),
但是 None 这些工作!
EDIT 这个 url 有效,我不需要 def_get_absolute_url
url(r'^$', core.views.LandingView.as_view(success_url="/"), name='index'),
我确信有一种方法可以在像您这样的基于 Class 的视图中进行重定向,但我会这样做,只要保存表单,然后它就会重定向。如果是的话,你的保存方法是否有效我喜欢你这样做的方式,但我不确定编辑你的保存方法是否是最好的方法,而不是在你的视图中获取实例,用数据预填充表单已经在初始创建表单中提交了 say。任何其他问题让我知道。
views.py
from app.forms import LocationForm
def Landing_View(request)
if request.method == 'POST':
form = LocationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/your_url/')
else:
print form.errors()
else:
form = LocationForm()
return render (request, 'template.html', {'form':form},)
urls.py - URL 对应 Landing_View,然后我会在保存
时将您重定向回此 URL url(r'^your_url/', app.views.Landing_View, name='your_url'),