django 写登录注册界面 注册后将信息存入数据库中 并提示注册成功 登录界面
时间: 2024-01-10 22:02:11 浏览: 27
好的,下面是一个基本的Django实现用户注册和登录的示例:
1. 创建一个Django项目和应用。
2. 在应用中创建一个`forms.py`文件,用于定义用户注册和登录表单。
```python
from django import forms
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
class UserRegistrationForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ('username', 'email', 'password1', 'password2')
class UserLoginForm(AuthenticationForm):
class Meta:
model = User
fields = ('username', 'password')
```
3. 在应用中创建一个`views.py`文件,用于处理用户注册和登录请求。
```python
from django.shortcuts import render, redirect
from django.contrib.auth import login, authenticate
from django.contrib import messages
from .forms import UserRegistrationForm, UserLoginForm
def register(request):
if request.method == 'POST':
form = UserRegistrationForm(request.POST)
if form.is_valid():
user = form.save()
username = form.cleaned_data.get('username')
messages.success(request, f"Account created for {username}!")
login(request, user)
return redirect('home')
else:
form = UserRegistrationForm()
return render(request, 'register.html', {'form': form})
def login(request):
if request.method == 'POST':
form = UserLoginForm(data=request.POST)
if form.is_valid():
user = form.get_user()
login(request, user)
return redirect('home')
else:
form = UserLoginForm()
return render(request, 'login.html', {'form': form})
```
4. 在应用中创建一个`urls.py`文件,用于配置URL路由。
```python
from django.urls import path
from . import views
urlpatterns = [
path('register/', views.register, name='register'),
path('login/', views.login, name='login'),
]
```
5. 在项目中的`settings.py`文件中配置数据库,然后运行`python manage.py makemigrations`和`python manage.py migrate`命令以创建用户模型。
```python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'your_database_name',
'USER': 'your_database_username',
'PASSWORD': 'your_database_password',
'HOST': 'localhost',
'PORT': '3306',
}
}
```
6. 在应用中创建一个`templates`文件夹,并在其中创建`register.html`和`login.html`模板文件。
```html
<!-- register.html -->
{% extends 'base.html' %}
{% block content %}
<h2>Register</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
</form>
{% endblock %}
<!-- login.html -->
{% extends 'base.html' %}
{% block content %}
<h2>Login</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Login</button>
</form>
{% endblock %}
```
7. 在应用中创建一个`templates`文件夹,并在其中创建一个`base.html`模板文件,用于作为其他模板的基础模板。
```html
<!-- base.html -->
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}{% endblock %}</title>
</head>
<body>
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}! <a href="{% url 'logout' %}">Logout</a></p>
{% else %}
<p><a href="{% url 'register' %}">Register</a> or <a href="{% url 'login' %}">Login</a></p>
{% endif %}
{% block content %}{% endblock %}
</body>
</html>
```
这样,你就可以在Django中创建一个基本的用户注册和登录界面,注册成功后用户信息会被存储在数据库中。同时,你可以根据需要对表单和模板进行修改和定制。