栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django案例

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django案例

1.案例说明
  1. 实现登录注册功能
  2. 注册:用户输入账号密码后 - 提交服务器 - 将账号密码保存到数据库中 - 重定向到登录页面
  3. 登录:用户输入账号密码 - 服务器进行判断是否存在 - 存在跳转到主页面 - 不存在跳转到注册页面
  4. 主页面:对数据进行增删改查操作
2. 准备工作
  1. 创建Django项目django-admin startproject 项目名
  2. 创建子应用python manage.py startapp 子应用名
  3. 配置setting
  4. 安装数据库
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 migrate
4 注册 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


    

主页面

{% for i in tea %} {% endfor %}
编号 姓名 课程 年龄 性别 操作
{{ i.id }} {{ i.name }} {{ i.course }} {{ i.age }} {{ i.sex }} 删除
{% csrf_token %} 姓名: 课程: 年龄: 性别:

修改功能

{% csrf_token %} 编号: 姓名: 课程:
年龄: 性别:

搜索

请输入id:
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/839877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号