get_success_url()只需要3个参数(2) [英] get_success_url() takes exactly 3 arguments (2 given)

查看:743
本文介绍了get_success_url()只需要3个参数(2)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用


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 set success_url instead:

class MyRegistrationView(RegistrationView):
    success_url = 'home'

这篇关于get_success_url()只需要3个参数(2)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆