get_success_url()只需要3个参数(2) [英] get_success_url() takes exactly 3 arguments (2 given)
问题描述
django-registration-redux(1.4)
< blockjote>
为我的django注册(django 1.8),,但是,从来没有我注册的网页将显示错误
,,但是在views_valid中的views.py,第43行是编辑功能,似乎没有关于注册表?
views.py
@login_required
def edit_thing(request,slug):
#抓取对象...
thing = ProductsTbl.objects.get(slug = slug)
如果thing.user!=请求。用户:
raise Http404
#设置我们正在使用的表单...
form_class = ProductsTblForm
如果request.method =='POST':
#grab来自提交表单的数据
form = form_class(d ata = request.POST,files = request.FILES,instance = thing)#**第43行**
如果form.is_valid():
#保存新数据
form.save ()
返回重定向('thing_detail',slug = thing.slug)
#否则只需创建窗体
else:
form = form_class(instance = thing)
#并渲染模板
return render(request,'things / edit_thing.html',{
'thing':thing,
'form':form,
})
urls.py
从django.conf.urls导入模式,url,include
从django导入admin
。 view.generic import TemplateView
从设计器导入视图
from designer.backends import MyRegistrationView
from django.conf import settings
from django.contrib.auth.views import(
password_reset,
password_reset_done,
password_reset _confirm,
password_reset_complete,
)
....
urlpatterns = [
....
url(r'^ accounts / register / $',MyRegistrationView.as_view(),name ='registration_register'),
....
]
registration_form.html
< h1>注册表单< / h1>
< form role =formaction =method =post>
{%csrf_token%}
{{form.as_p}}
< input type =submitvalue =提交/>
< / form>
{%endblock content%}
,,虽然有这个错误,我的数据库仍然写在用户和密码,,,。
可以任何人告诉我为什么我有这个错误,非常感谢你
backends.py
from registration.backends.simple.views import RegistrationView
class MyRegistrationView(RegistrationView) :
def get_success_url(self,request,user):
#我们要在#成功注册后重定向到的命名URL
return('home')
解决方案
get_success_url
方法不会请求一个论据。删除它。class MyRegistrationView(RegistrationView):
def get_success_url(self,user):
#在#成功注册后我们要重定向到的命名URL
return('home')
在这种情况下,由于您始终重定向到
home
视图,您可以设置success_url
代替:class MyRegistrationView(RegistrationView):
success_url ='home'
every one ,, I am using
django-registration-redux (1.4)
for my django registration(django 1.8),,however ,,when never I registered the web will show the error
,,but the views.py in form_valid, line 43 it is the editing function,,it seems not about the register??
views.py
@login_required def edit_thing(request, slug): # grab the object... thing = ProductsTbl.objects.get(slug=slug) if thing.user != request.user: raise Http404 # set the form we're using... form_class = ProductsTblForm if request.method == 'POST': # grab the data from the submitted form form = form_class(data=request.POST,files=request.FILES,instance=thing)#**line 43** if form.is_valid(): # save the new data form.save() return redirect('thing_detail', slug=thing.slug) # otherwise just create the form else: form = form_class(instance=thing) # and render the template return render(request, 'things/edit_thing.html', { 'thing': thing, 'form': form, })
urls.py
from django.conf.urls import patterns, url,include from django.contrib import admin from django.views.generic import TemplateView from designer import views from designer.backends import MyRegistrationView from django.conf import settings from django.contrib.auth.views import ( password_reset, password_reset_done, password_reset_confirm, password_reset_complete, ) .... urlpatterns = [ .... url(r'^accounts/register/$', MyRegistrationView.as_view(), name='registration_register'), .... ]
registration_form.html
<h1>Registration Form</h1> <form role="form" action="" method="post"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Submit" /> </form> {% endblock content %}
,,though got this error ,,my databases still wrote in the user and password,,,. can any one tell me why I got this error,,thank you very much
backends.py
from registration.backends.simple.views import RegistrationView class MyRegistrationView(RegistrationView): def get_success_url(self, request, user): # the named URL that we want to redirect to after # successful registration return ('home')
解决方案The
get_success_url
method does not take request as an argument. Remove it.class MyRegistrationView(RegistrationView): def get_success_url(self, user): # the named URL that we want to redirect to after # successful registration return ('home')
In this case, since you always redirect to the
home
view, you could setsuccess_url
instead:class MyRegistrationView(RegistrationView): success_url = 'home'
这篇关于get_success_url()只需要3个参数(2)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!