- 实现登录注册功能
- 注册:用户输入账号密码后 - 提交服务器 - 将账号密码保存到数据库中 - 重定向到登录页面
- 登录:用户输入账号密码 - 服务器进行判断是否存在 - 存在跳转到主页面 - 不存在跳转到注册页面
- 主页面:对数据进行增删改查操作
- 创建Django项目django-admin startproject 项目名
- 创建子应用python manage.py startapp 子应用名
- 配置setting
- 安装数据库
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'lianxi',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST':'localhost',
'POST':3306,
'USER':'root',
'PASSWORD':'123123',
'NAME':'lianxi',
}
}
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
在同项目名下的文件init.py
# 安装数据库 import pymysql pymysql.install_as_MySQLdb()3. 创建表 1) 在models.py创建表
# 用户名表
class Users(models.Model):
user = models.CharField(max_length=20,verbose_name='账号')
pwd = models.CharField(max_length=20,verbose_name='密码')
# 老师信息表
class Teacher(models.Model):
name = models.CharField(max_length=20,verbose_name='姓名')
course = models.CharField(max_length=20,verbose_name='课程')
age = models.IntegerField(verbose_name='年龄')
sex = models.CharField(max_length=20,verbose_name='性别')
class Mate:
verbose_name='Teacher'
verbose_name_pluse = verbose_name
db_table = 'teacher'
2)在admin.py注册表
from django.contrib import admin from lianxi.models import Teacher,Users # Register your models here. admin.site.register(Teacher) admin.site.register(Users)3)生成迁移、执行迁移
python manage.py makemigrations python manage.py migrate4 注册 1)注册视图
class RegisterView(View):
# 返回注册页面
def get(self,request):
return render(request,'register.html')
# 提交账号密码并保存到数据库
def post(self,request):
# 获取表中账号密码,解析
user1 = request.POST.get('user')
pwd1 = request.POST.get('pwd')
# 保存到数据库中,可能会出现异常,所有要做异常处理
try:
# 新增数据
Users.objects.create(user=user1,pwd=pwd1)
# 失败做的代码
except Exception as e:
return HttpResponse('账号密码注册失败')
# 成功后返回登录页面,重定向
return redirect('/login/')
2)配置路由
主路由路由分发
from django.contrib import admin
from django.urls import path,include # 导入分发
from myapp import urls
urlpatterns = [
path('admin/', admin.site.urls),
# 路由分发
path('',include(urls))
]
在应用里建一个urlspy文件
from django.urls import path,re_path
from myapp import views
urlpatterns = [
path('register/',views.RegisterView.as_view()),
]
3)注册页面
Title
注册页面
{# action 可以不加,默认到register #}
5.登录页面
1)登录视图
class LoginView(View):
# 返回登录页面
def get(self,request):
return render(request,'login.html')
def post(self,request):
user1 = request.POST.get('user')
pwd1 = request.POST.get('pwd')
# 查看数据库是否存在
try:
# 查询用户名与表单中输入的用户名一致的数据
user_data = Users.objects.get(user=user1)
except Exception as e:
print(e)
return HttpResponse('账号不存在')
# 用户存在,判断密码是否一致
if pwd1 == user_data.pwd:
# 重定向到主页面
return redirect('/index/')
else:
return HttpResponse('密码错误')
2)登录路由
from django.urls import path,re_path
from myapp import views
urlpatterns = [
path('login/',views.LoginView.as_view()),
]
3) 登录页面
Title
登录页面
{# action 可以不加,默认到register #}
6 主页面 (增删改查)
1)主视图
from django.shortcuts import render,redirect
from lianxi.models import Teacher
from django.views import View
from django.http import HttpResponse
# Create your views here.
class ListView(View):
def get(self,request):
teacher = Teacher.objects.all()
conter ={
'tea':teacher
}
return render(request,'list.html',conter)
class DelView(View):
def get(self,request,id):
Teacher.objects.filter(id=id).delete()
return redirect('/list/')
class AddView(View):
def post(self,request):
name = request.POST.get('name')
course = request.POST.get('course')
age = request.POST.get('age')
sex = request.POST.get('sex')
try:
Teacher.objects.create(name=name,course=course,age=age,sex=sex)
except Exception as e:
print(e)
return HttpResponse('添加失败')
return redirect('/list/')
class UpView(View):
def post(self,request):
id = request.POST.get('id')
name = request.POST.get('name')
course = request.POST.get('course')
age = request.POST.get('age')
sex = request.POST.get('sex')
try:
Teacher.objects.filter(id=id).update(
name=name,course=course,age=age,sex=sex
)
except Exception as e:
print(e)
return HttpResponse('修改数据不存在')
return redirect('/list/')
class SearchView(View):
def get(self,request):
id = request.GET.get('id')
try:
tea_data = Teacher.objects.get(id=id)
except Exception as e:
print(e)
return HttpResponse('搜索的数据不存在')
return HttpResponse(f'搜索数据为:编号{tea_data.id}、姓名{tea_data.name}、课程{tea_data.course}、年龄{tea_data.age}、性别:{tea_data.sex}')
2) 路由
from django.contrib import admin
from django.urls import path
from lianxi import views
urlpatterns = [
path('admin/', admin.site.urls),
path('list/',views.ListView.as_view()), # 主页面
path('del//',views.DelView.as_view()), # 删除路由
path('add/',views.AddView.as_view()), # 添加路由
path('update/',views.UpView.as_view()), # 修改路由
path('search/',views.SearchView.as_view())
]
3)主视图
Title
主页面
| 编号 | 姓名 | 课程 | 年龄 | 性别 | 操作 |
|---|---|---|---|---|---|
| {{ i.id }} | {{ i.name }} | {{ i.course }} | {{ i.age }} | {{ i.sex }} | 删除 |
修改功能
搜索



