example - reverse django
get_success_url() toma exactamente 3 argumentos(2 dados) (3)
El método get_success_url
no toma la solicitud como argumento. Eliminarlo
class MyRegistrationView(RegistrationView):
def get_success_url(self, user):
# the named URL that we want to redirect to after # successful registration
return (''home'')
En este caso, dado que siempre se redirecciona a la vista de home
, puede establecer success_url
en success_url
lugar:
class MyRegistrationView(RegistrationView):
success_url = ''home''
cada uno, estoy usando
django-registration-redux (1.4)
para mi registro django (django 1.8) ,, sin embargo ,, cuando nunca me registré la web mostrará el error
,, pero el views.py en form_valid, línea 43 es la función de edición, parece que no se trata del registro ??
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 %}
aunque obtuve este error, mis bases de datos aún escribieron en el usuario y la contraseña ,,,. ¿Alguien puede decirme por qué tengo este error? Muchas gracias
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'')
En django-registration-redux RegistrationView ha definido get_success_url como este.
def get_success_url(self, user=None):
"""
Use the new user when constructing success_url.
"""
return super(RegistrationView, self).get_success_url()
Por lo tanto, parece que solo se pasarán dos parámetros a ese funciton. Sin embargo, en tu subclase de si tienes
def get_success_url(self, request, user):
# the named URL that we want to redirect to after # successful registration
return (''home'')
Que tiene un parámetro de solicitud adicional que no vas a recibir. de ahí el error.
después de la versión 1.4, el método get_success_url no toma la solicitud como argumento:
def get_success_url(self, user=None):
Sin embargo, si necesita procesar el objeto de solicitud (por ejemplo, desea recordar la página desde la cual el usuario decidió registrarse y que se puede pasar como un argumento de obtención o publicación) django-registration-redux proporciona una señal muy conveniente: registro .signals.user_registered
como sigue:
def remember_program_for_registration(sender, user, request, **kwargs):
[do some processing of the request object]