Python3.7.1 + Django2.2.2 + Mysql完成Web项目

基本配置

1、电脑安装Python环境
2、Pycharm下载安装
3、创建Django项目,连接Mysql数据库

开始项目

1、初识目录
Python3.7.1 + Django2.2.2 + Mysql完成Web项目_第1张图片

apps:集合包,包含每一个功能模块
	migrations目录:存放提交数据库操作命令
	__init__.py:初始化文件,标志我们的app可以被引用
	apps.py:存放app信息
	models.py:当前app所用到的数据表配置,数据库表的映射
	adminx.py:连接数据库,使用xadmin管理后台上传数据到数据库
	urls.py:页面路由配置
	views.py:接口后台逻辑配置
eduproject:项目基础文件
	settings.py:项目基础配置
	urls.py:底层路由配置,连接到每一个app
extra_apps:存放额外的app文件
	如xadmin先关文件
media:媒体文件
	存入上传的动态文件
static:静态文件
	js/css/img等
templates:前端模板文件

2、项目配置
(1)在settings.py中配置包括:
数据库配置
静态文件根目录配置
邮件配置

(2)在urls.py中配置路由情况

(3)分析页面,明确所需的数据表,在app下的models.py中配置
与此同时,对应在adminx.py中进行相对应的配置,便于管理后台向数据库添加数据

(4)静态文件导入static

(5)前端页面导入media,分析页面结构,总结公共模板

3、项目开发“三步走”
第一步:
在urls.py中编写路由
在views.py中编写接口,初步实现页面跳转
第二步:
按照django语法,根据创建出来的公共模板,修改页面正常展示
第三步:
完成页面相关功能实现(请求数据—>数据库查找—>返回数据—>数据按需展示)

4、通过前台页面操作数据(三步走)
前提:数据库连接成功,models.py文件配好
第一步:
前端获取数据,请求接口
ajax请求或表单请求
第二步:
编写forms.py文件,设置要操作的数据,制定校验规则

from django import forms
from .models import UserAsk, UserComment,UserProfile
from captcha.fields import CaptchaField
import re
#两种创建类的方式
class UserRegisterForm(forms.Form):
    email = forms.EmailField(required=True)
    password = forms.CharField(required=True,min_length=3,max_length=15,error_messages={
        'required':'密码必须填写',
        'min_length':'密码不得小于3位',
        'max_length':'密码不得大于15位'
    })
    captcha = CaptchaField(error_messages={
        'invalid': '验证码错误'
    })
#更改完数据可以直接进行保存
class UserAskForm(forms.ModelForm):
    class Meta:
        model = UserAsk
        #使用字段较少的话可以单独列出来
        #fields = ['name','phone','course']
        #使用字段较多的话,可以将不需要的字段排除出去
        exclude = ['add_time']
        #如果用到了全部字段,可以用下面的方法
        #fields = '__all__'
    #添加自定义规则
    def clean_phone(self):
        #重新去cleaned_data中将需要的值给取出来
        phone = self.cleaned_data['phone']
        #建立正则对象
        com = re.compile('^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\\d{8})$')
        #如果有返回值,则表示验证成功
        if com.match(phone):
            return phone
        else:
            #验证失败
            raise forms.ValidationError('手机号填写错误')

第三步:
配置后端接口,首先在urls.py中配置路由,然后在views.py中编写逻辑

#引入返给前端所需的配置
from django.shortcuts import render,HttpResponse,redirect,reverse
#引入表单校验类
from .forms import UserRegisterForm,UserLoginForm,UserForgetForm,UserResetForm,UserChangeImageForm,UserChangeInfoForm,UserChangeEmailForm,UserResetEmailForm
from .models import UserProfile,EmailVerifyCode
from django.db.models import Q
from django.contrib.auth import authenticate,login,logout
#引入自己封装好的方法
from tools.send_email_tool import send_email_code
#返给前端基本提示数据
from django.http import JsonResponse
#引入第三方所需插件
from datetime import datetime
#接口名
def register(request):
	#判断请求方法
    if request.method == 'GET':
        user_register_form = UserRegisterForm()
        #跳转到指定页面且返回数据
        return render(request,'users/register.html',{
            'user_register_form':user_register_form
        })
    else:
        user_register_form = UserRegisterForm(request.POST)
        #表单数据校验
        if user_register_form.is_valid():
        	#获取请求数据
            email = user_register_form.cleaned_data['email']
            password = user_register_form.cleaned_data['password']

            #查询数据
            user_list = UserProfile.objects.filter(Q(username = email)|Q(email=email))
            if user_list:
                return render(request,'users/register.html',{
                    'msg':'用户已存在'
                })
            else:
            	#新增数据
                a = UserProfile()
                a.username = email
                a.set_password(password)
                a.email = email
                a.save()
                #发送邮箱验证码
                send_email_code(email,1)
                return HttpResponse('请尽快前往您的邮箱激活账户,否则无法登陆')
        else:
            return render(request,'users/register.html',{
                'user_register_form':user_register_form
            })
#修改头像
def user_change_image(request):
    #request.FILES为上传的文件
    #instance为需要改变的实例
    user_change_image_form = UserChangeImageForm(request.POST,request.FILES,instance=request.user)
    if user_change_image_form.is_valid():
    	#更改数据
        user_change_image_form.save(commit=True)
        return JsonResponse({'status':'ok'})
    else:
        return JsonResponse({'status': 'err'}

你可能感兴趣的:(Python,Django,mysql,web项目)