Python 如何使用django制作注册和登录系统?
我想创建一个注册和登录系统。我已经制作了注册表,但我无法执行其中的身份验证部分 型号.pyPython 如何使用django制作注册和登录系统?,python,django,Python,Django,我想创建一个注册和登录系统。我已经制作了注册表,但我无法执行其中的身份验证部分 型号.py from __future__ import unicode_literals from django.db import models class profile(models.Model): WORK = ( ('School', 'School'), ('Collage', 'Collage'), ('Job', '
from __future__ import unicode_literals
from django.db import models
class profile(models.Model):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
name = models.CharField(max_length=150)
email = models.EmailField(max_length=254)
username = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=80)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
def __unicode__(self):
return self.username
from django.db import models
from django.contrib.auth.models import AbstractUser
class Profile(AbstractUser):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.views import login as django_login_view
from django.views.generic import FormView
class LoginView(FormView):
form_class = AuthenticationForm
template_name = 'my_users_app/login.html'
def form_valid(self, form):
usuario = form.get_user()
django_login_view(self.request, usuario)
return super(LoginView, self).form_valid(form)
from my_users_app.views import LoginView
urlpatterns = [
url(r'^login/$', LoginView.as_view(), name='login'),
]
用于用户注册的Forms.py
我想使用上面的数据库对用户进行身份验证我该如何做?(我也不想使用任何第三方库,如django registration)@Alasdair是对的,您不需要django.contrib.admin来使用django.contrib.auth 接下来是一个利用django泛型类视图的解决方案 型号.py
from __future__ import unicode_literals
from django.db import models
class profile(models.Model):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
name = models.CharField(max_length=150)
email = models.EmailField(max_length=254)
username = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=80)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
def __unicode__(self):
return self.username
from django.db import models
from django.contrib.auth.models import AbstractUser
class Profile(AbstractUser):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.views import login as django_login_view
from django.views.generic import FormView
class LoginView(FormView):
form_class = AuthenticationForm
template_name = 'my_users_app/login.html'
def form_valid(self, form):
usuario = form.get_user()
django_login_view(self.request, usuario)
return super(LoginView, self).form_valid(form)
from my_users_app.views import LoginView
urlpatterns = [
url(r'^login/$', LoginView.as_view(), name='login'),
]
设置.py
AUTH_USER_MODEL = 'my_users_app.Profile'
LOGIN_URL = '/login/' # Where our login page is
视图.py
from __future__ import unicode_literals
from django.db import models
class profile(models.Model):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
name = models.CharField(max_length=150)
email = models.EmailField(max_length=254)
username = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=80)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
def __unicode__(self):
return self.username
from django.db import models
from django.contrib.auth.models import AbstractUser
class Profile(AbstractUser):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.views import login as django_login_view
from django.views.generic import FormView
class LoginView(FormView):
form_class = AuthenticationForm
template_name = 'my_users_app/login.html'
def form_valid(self, form):
usuario = form.get_user()
django_login_view(self.request, usuario)
return super(LoginView, self).form_valid(form)
from my_users_app.views import LoginView
urlpatterns = [
url(r'^login/$', LoginView.as_view(), name='login'),
]
url.py
from __future__ import unicode_literals
from django.db import models
class profile(models.Model):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
name = models.CharField(max_length=150)
email = models.EmailField(max_length=254)
username = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=80)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
def __unicode__(self):
return self.username
from django.db import models
from django.contrib.auth.models import AbstractUser
class Profile(AbstractUser):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.views import login as django_login_view
from django.views.generic import FormView
class LoginView(FormView):
form_class = AuthenticationForm
template_name = 'my_users_app/login.html'
def form_valid(self, form):
usuario = form.get_user()
django_login_view(self.request, usuario)
return super(LoginView, self).form_valid(form)
from my_users_app.views import LoginView
urlpatterns = [
url(r'^login/$', LoginView.as_view(), name='login'),
]
login.html
<form method="post" autocomplete="off">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Login</button>
</form>
{%csrf_令牌%}
{{form.as_p}}
登录
注:
- 为了创建自己的用户模型,您需要配置
,并从AUTH\u User\u模型
继承AbstractUser
将验证用户名/密码,并触发form\u validAuthenticationForm
- 我正在使用django.contrib.auth.views import login中的
导入django login视图,该视图负责在表单验证后执行登录操作
- @Alasdair是对的,使用django.contrib.auth不需要django.contrib.admin
接下来是一个利用django泛型类视图的解决方案
型号.py
from __future__ import unicode_literals
from django.db import models
class profile(models.Model):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
name = models.CharField(max_length=150)
email = models.EmailField(max_length=254)
username = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=80)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
def __unicode__(self):
return self.username
from django.db import models
from django.contrib.auth.models import AbstractUser
class Profile(AbstractUser):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.views import login as django_login_view
from django.views.generic import FormView
class LoginView(FormView):
form_class = AuthenticationForm
template_name = 'my_users_app/login.html'
def form_valid(self, form):
usuario = form.get_user()
django_login_view(self.request, usuario)
return super(LoginView, self).form_valid(form)
from my_users_app.views import LoginView
urlpatterns = [
url(r'^login/$', LoginView.as_view(), name='login'),
]
设置.py
AUTH_USER_MODEL = 'my_users_app.Profile'
LOGIN_URL = '/login/' # Where our login page is
视图.py
from __future__ import unicode_literals
from django.db import models
class profile(models.Model):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
name = models.CharField(max_length=150)
email = models.EmailField(max_length=254)
username = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=80)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
def __unicode__(self):
return self.username
from django.db import models
from django.contrib.auth.models import AbstractUser
class Profile(AbstractUser):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.views import login as django_login_view
from django.views.generic import FormView
class LoginView(FormView):
form_class = AuthenticationForm
template_name = 'my_users_app/login.html'
def form_valid(self, form):
usuario = form.get_user()
django_login_view(self.request, usuario)
return super(LoginView, self).form_valid(form)
from my_users_app.views import LoginView
urlpatterns = [
url(r'^login/$', LoginView.as_view(), name='login'),
]
url.py
from __future__ import unicode_literals
from django.db import models
class profile(models.Model):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
name = models.CharField(max_length=150)
email = models.EmailField(max_length=254)
username = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=80)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
def __unicode__(self):
return self.username
from django.db import models
from django.contrib.auth.models import AbstractUser
class Profile(AbstractUser):
WORK = (
('School', 'School'),
('Collage', 'Collage'),
('Job', 'Job')
)
)
age = models.IntegerField()
work = models.CharField(max_length=10, choices=WORK)
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.views import login as django_login_view
from django.views.generic import FormView
class LoginView(FormView):
form_class = AuthenticationForm
template_name = 'my_users_app/login.html'
def form_valid(self, form):
usuario = form.get_user()
django_login_view(self.request, usuario)
return super(LoginView, self).form_valid(form)
from my_users_app.views import LoginView
urlpatterns = [
url(r'^login/$', LoginView.as_view(), name='login'),
]
login.html
<form method="post" autocomplete="off">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Login</button>
</form>
{%csrf_令牌%}
{{form.as_p}}
登录
注:
- 为了创建自己的用户模型,您需要配置
,并从AUTH\u User\u模型
继承AbstractUser
将验证用户名/密码,并触发form\u validAuthenticationForm
- 我正在使用django.contrib.auth.views import login中的
导入django login视图,该视图负责在表单验证后执行登录操作