DJANGO学习之云笔记项目
1. 项目介绍
1.1 云笔记项目
- 项目介绍:用户可在该系统中记录自己的日常学习/旅游笔记,用户的数据将被安全的存储在云笔记平台;用户与用户之间数据为隔离存储(用户只有在登陆后才能使用相关笔记功能,且只能查阅自己的笔记内容)
1.2 功能拆解
- 用户模块
- 注册 - 成为平台用户
- 登陆 - 校验用户身份
- 退出登陆 - 退出登陆状态
- 笔记模块
- 查看笔记列表 - 查
- 创建新笔记 - 增
- 修改笔记 - 改
- 删除笔记 - 删
2. 项目配置
2.1 项目创建
- 进入命令行,输入
django-admin start project Note
创建项目 - 创建子应用:命令行切换到应用目录下,输入
python manage.py startapp user
创建子应用 - 项目配置
- 注册子应用:在settings.py文件中的INSTALLED_APPS中将创建的子应用添加进去
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'user', #将user注册 ]
- 禁用csrf
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
- 添加数据库:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'note', 'USER': 'root', 'PASSWORD': 'mysql', 'HOST': '127.0.0.1', 'port':3306, } }
- 更改语言及时区
LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = True
- 注册子应用:在settings.py文件中的INSTALLED_APPS中将创建的子应用添加进去
2.2 用户模型类设计
- 模型类字段
- username: max_length=30,具备唯一性约束
- password: max_length=32
- create_time: 记录用户创建时间
- update_time: 记录用户更新时间
from django.db import models class User(models.Model): username = models.CharField('用户姓名',max_length=30,unique=True) password = models.CharField('用户密码',max_length=32) create_time = models.DateTimeField('创建时间',auto_now_add=True) update_time = models.DateTimeField('更新时间',auto_now=True) def __str__(self): return 'username:%s'%(self.username)
2.3 用户注册
- URL:/user/reg -> 在主路由中配置子应用路由
user/
#项目文件同名文件夹下/urls.py from django.contrib import admin from django.urls import path,include import user urlpatterns = [ path('admin/', admin.site.urls), path('user/', include('user.urls')), ]
#子应用目录下新建urls.py from django.urls import path from user import views urlpatterns = [ path('reg', views.reg_view), ]
- 视图函数:reg_view
from django.http import HttpResponse from django.shortcuts import render from user.models import User # Create your views here. def reg_view(request): #注册 GET返回页面 if request.method == 'GET': return render(request,'user/register.html') #POST处理页面提交的数据 elif request.method == 'POST': password1 = request.POST.get('password1','') password2 = request.POST.get('password2','') username = request.POST.get('username','') # 1.两个密码要保持一致 if password2 != password1: return HttpResponse('两次输入密码不一致') # 2.当前用户名是否可用 old_user = User.objects.filter(username=username) if old_user: return HttpResponse('用户名已存在') # 3. 插入数据【明文处理】 User.objects.create(username=username,password=password1) return HttpResponse('注册成功')
- 模板位置:templates/user/register.html
<!--templates/user/register.html--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>账号注册</title> </head> <body> <form action="reg" method="post"> <p>用户名 <input name="username" type="text"></p> <p>密码 <input name="password1" type="text"></p> <p>确认密码 <input name="password2" type="text"></p> <p><input type="submit" value="注册"></p> </form> </body>