Найти - Пользователи
Полная версия: регистрация пользователя на сайте
Начало » Django » регистрация пользователя на сайте
1 2 3 4
ciklone
ВСем привет, помогите разобраться. Когда набираю , mysite/registr/ форма открывается и всё работает, но когда захожу на главную страницу и там ссылка на регистрацию выдается ошибка:

Reverse for ‘views.register1’ with arguments ‘()’ and keyword arguments ‘{}’ not found. 0 pattern(s) tried:

вот все тексты:
 def shapka(request):
    return render_to_response("Shapka.html")
	    
def login(request):
    return render_to_response("login.html")
    
def register(request):
    return render_to_response("register.html")
from django.views.generic.edit import FormView
from django.contrib.auth.forms import UserCreationForm
class RegisterFormView(FormView):
    form_class = UserCreationForm
    # Ссылка, на которую будет перенаправляться пользователь в случае успешной регистрации.
    # В данном случае указана ссылка на страницу входа для зарегистрированных пользователей.
    success_url = "/login/"
    # Шаблон, который будет использоваться при отображении представления.
    template_name = "register.html"
    def form_valid(self, form):
        # Создаём пользователя, если данные в форму были введены корректно.
        form.save()
        # Вызываем метод базового класса
        return super(RegisterFormView, self).form_valid(form)    
это views.py

 urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', views.index),
    url(r'^shapka/$', views.shapka),
    url(r'^login/$', views.login),
    url(r'^register/$', views.register),
    url(r'^register1/$', views.RegisterFormView.as_view())
]

 <p class="word"><a href = {% url 'views.register1' %}>Регистрация</a></p>

как то так, если что непонятно - поясню
FishHook
Вы неправильно понимаете реверс. Суть в том, что в шаблонах и в коде вы никогда не должны ссылаться на УРЛ, вы должны получать УРЛ через его имя. Смысл в том, чтобы не менять по проекту урлы, если изменится ТЗ. Вы меняете УРЛ только в urls.py и все.

Вот определение тега
{% url ‘some-url-name’ v1 v2 %}

Как видите, там требуется имя УРЛа, а не имя представления или что-то еще.

 urlpatterns = [
    url(r'^register1/$', views.RegisterFormView.as_view(), name="url_register_1")
]
 <p class="word"><a href = "{% url 'url_register_1' %}">Регистрация</a></p>
ciklone
FishHook
Вы неправильно понимаете реверс. Суть в том, что в шаблонах и в коде вы никогда не должны ссылаться на УРЛ, вы должны получать УРЛ через его имя. Смысл в том, чтобы не менять по проекту урлы, если изменится ТЗ. Вы меняете УРЛ только в urls.py и все.Вот определение тега
Спасибо огроммное, помогло. Но теперь вылез другой прикол: использую
 class RegisterFormView(FormView):
    form_class = UserCreationForm
из коробочки. На локальной машине всё ОК, на боеввом серваке пишет “Last_Name” не может быть NULL В чем прикол?
FishHook
Где пишет, кто пишет? Вы же уже не новичок, где трейсбэк ошибки? Где код формы?
ciklone
FishHook
Где пишет, кто пишет? Вы же уже не новичок, где трейсбэк ошибки? Где код формы?
код формы:
 <html lang="ru">
<html>
  <head>
    <title>Регистрация</title>
  </head>
  <body>
    <form action="" method="post">
      {% csrf_token %}
      <!-- as_p для того, чтобы каждый элемент формы был с новой строки -->
      {{ form.as_p }}
      <button type="submit">Зарегистрироваться</button>
    </form>
  </body>
</html>

после нажатия кнопки ЗАРЕГИСТРИРОВАТЬСЯ

IntegrityError at /register/
(1048, “Column ‘last_login’ cannot be null”)
Request Method: POST
Request URL: http://msv.pythonanywhere.com/register/
Django Version: 1.9.1
Exception Type: IntegrityError
Exception Value:
(1048, “Column ‘last_login’ cannot be null”)
Exception Location: /home/msv/.virtualenvs/django18/local/lib/python2.7/site-packages/MySQLdb/connections.py in defaulterrorhandler, line 36
Python Executable: /usr/local/bin/uwsgi
Python Version: 2.7.6
FishHook
ciklone
код формы:
ciklone
FishHook
отож, в литературе пишут, что это поле опциональное. Может джанго 1.9 что то поменялось?
ciklone
FishHook
поддержка на боевом сервере ответила так: This is not pythonanywhere specific error. This is related to UserModel of Django. Please ask this on stackoverflow with more details and with code.
FishHook
ciklone
отож
покажите код формы и код модели!!!
ciklone
FishHook
Код формы уже показывал, а в файле models.py ничего не писал, потому что всё работает из коробки.

views.py :
 from django.contrib import auth
from django.contrib.auth.forms import UserCreationForm
class RegisterFormView(FormView):
    form_class = UserCreationForm
    success_url = "/login/"
    template_name = "register.html"
    def form_valid(self, form):
        # Создаём пользователя, если данные в форму были введены корректно.
        ##form.last_name = ""
        form.save()
        return super(RegisterFormView, self).form_valid(form)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB