Web后端开发第一周

web后端开发

1.创建django项目

1.1 cmd命令行执行:django-admin startproject 项目名 命令创建django项目(前提是python环境中已经安装了django的第三方库)

1.2 用Pycharm打开项目文件,创建虚拟环境。

1.3 创建虚拟环境:setting-->project interpreter-->Add-->ok

或者pycharm终端执行:python -m venv venv 创建虚拟环境

1.4 安装依赖库:django2.1.14, pymysql(pip install django==2.1.14)

安装完成后,即可执行命令运行django服务。

1.5 项目文件夹下的init.py文件中加入以下2句代码,使pymysql库可以正常使用:

improt pymysql

pymysql.install_as_MySQLdb()

1.6 在MySQL中创建项目的数据库,数据库名需要和项目名一致,执行的代码如下:

create database 数据库名 default charset utf8;

1.7 在MySQL中创建项目数据库的操作用户,代码如下:

create user '用户名'@'% or ip地址' identified by '密码';

1.8 给新建的用户授予操作权限,命令如下:

grant all privileges on 数据库名.* to '用户名'@'% or ip地址' identified by '密码’;
# privileges前可以不加all,指给指定用户授予部分权限,权限名跟在privilege后面并以逗号给开
#数据库名. 后面可以跟表名,指给指定数据库中指定的表授予权限,后面跟*,表示授予指定数据库中所有表的操作全权限。

1.9 修改项目的配置文件setting.py,内容如下:

DATABASES = {   #添加项目依赖的数据库信息,可添加多个
  default:{     #如果项目只需要一个数据库,建议就设置为default
        'ENGINE': 'django.db.backends.mysql',  #数据库引擎
        'NAME': 'django1906',   #数据库名称
        'HOST': '139.224.34.130',   #数据库的主机名称
        'PORT': 3306,   # 数据库端口
        'USER': 'jackpowerf',   #用户名字
        'PASSWORD': '123456',   #用户密码
        'CHARSET': 'utf-8',     #存取数据的编码格式,需和数据库的相一致
        'TIME_ZONE': 'Asia/Chongqing',
  }
}
LANGUAGE_CODE = 'zh-hans'  #将语言改为汉语
TIME_ZONE = 'Asia/Chongqing' #设置时区为东八区,重庆 

1.10.在pycharm终端(Terminal)执行命令:python manage.py startapp 应用名 创建应用

# 将应用配置到setting.py文件中
INSTALLED_APPS = [
  'v_query',
]

1.11 将项目推到github上

对本地代码实施版本控制并同步到版本控制服务器,在项目目录下打开git bush,执行以下代码:
1.git init  --将普通文件夹变成版本仓库
2.git remote add origin   --   绑定远端仓库
3.git add . --将文件从工作区同步到暂存区
4.git commit -m '...'   --   将文件提交到本地仓库
5.git status / git log
6.git push -u origin master  --   将本地代码推到服务器 

2.从git上克隆项目

1.用pycharm克隆项目到本地
2.创建虚拟环境(同1),或用python终端执行以下代码创建虚拟环境:

source venv/bin/activate  /  "ven/Scripts/activate"

3.重建依赖项:pip install -r requirement.txt

4.运行项目服务

3.项目架构模式:MVC

M   -   Model   -   模型  -   需要展示的数据
V   -   View    -   视图  -   数据显示形式
C   -   Controller  -   控制器 
架构理念:让模型(数据)和视图(显示)要分离  -   数据和显示解耦合,同一个数据可以渲染成不同的视图,同一个视图可以加载不同的数据。

Django中的项目架构模式:MTV

M   -   模板  -   需要显示的数据
T   -   视图  -   数据显示的形式 -   HTML文件  --需要自己新建
V   -   控制器 -   数据显示的方式 -   数据显示的函数

1.配置视图

setting.py --> TEMPLATES --> 'DIRS': [os.path.join(BASE_DIR,'templates'),]

2.view,py - 控制器

1.接收与用户请求,验证用户请求
2.操作模型(加工数据)
3.产生响应(渲染页面)

4.渲染页面

4.1创建视图函数:

# index:视图函数
def index(request:HttpRequest):     #request:用户请求信息(包括请求行、请求头、消息体)

   # return HttpRequest('

Hello,Django!

') # HttpRequest:响应的内容 return render(request,'index.html', context) #render() 用来渲染网页的函数,request:请求对象,‘index.html':要渲染的网页;context:字典,需要显示的数据

4.2 创建映射

from v_query.views import index

urlpatterns = [
    path('admin/', admin.site.urls),
    # path:一个函数,将一个路径和视图函数生成映射关系
    # 'index/': 在浏览器地址栏添加的路径
    # index:浏览器添加的地址映射的视图函数
    path('index/', index)  
]

4.2 模板页

即HTML文件:

Django模板页,可以使用django模板语言模板指令来生成动态内容
#for循环
{% for 变量 in 序列 %}  - 将映射的视图函数传来的数据通过for循环遍历取出,这里的序列需要与传来的字典中的键一致
<标签>{{ 变量 }}   -   将for循环取出的变量依次在网页中显示,循环多少次就显示多少个标签
{% endfor %}    - 表示循环结束

5.Django ORM框架

解决对象模型到关系模型的双向转换问题 - 将数据从对象形式与二维表形式的双向转换

6.创建数据模型

在models.py中:


class Subject(models.Model): #modes.Model :django封装的模型类,实现对象与关系的双向转换(类的属性即是二维表中的字段)
    """"学科模型类"""

    no = models.AutoField(primary_key=True, verbose_name='编号')
    name = models.CharField(max_length=20, verbose_name='名称')
    intro = models.CharField(max_length=1000, verbose_name='介绍')
    is_hot = models.BooleanField(default=False, verbose_name='热门')

    def __str__(self):
        return self.name

    class Meta:     # 指定此模型独赢数据库中形成的表的信息
        db_table = 'tb_subject' #表名
        verbose_name = '学科'
        verbose_name_plural = '学科'

7.迁移

将模型迁移到项目的数据库中,并形成二维表。

python manage.py makemigrations v_query #生成迁移
python manage.py migrate    # 执行迁移,形成二维表

8.ORM框架实现数据查询

def index(request):
    queryset = Subject.objects.all()    #获取所有模型的对象
    context = {
        'subjects': queryset
    }

    return render(request, 'subject.html', context)

9.创建django自带管理后台的管理员账号

python manage.py createsuperuser

10.注册模型到django管理后台

admin.py 文件中添加:
admin.site.register(Subject, SubjectAdmin)  #Subject 自己创建的模型

11.配置和加载静态资源

11.1 项目目录下创建static文件夹,存放静态资源文件

11.2 将静态文件配置到setting.py中

#配置静态资源的访问路径
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]

12.模型关联关系

在模型类的外键中加入2个参数t:o=关联的模型,on_delete=modes.PROTECT.

subject = models.ForeignKey(to=Subject, db_column='sno', on_delete=models.PROTECT, verbose_name='所属学科')

13.关联模型和静态资源

13.1 给模型添加属性以保存静态资源路径,迁移后,在数据库中不上对应静态资源的路径

13.2 用模板语言加载静态资源:

{% load staticfiles %}  -   添加到html文件的最前面

例:

14. 将密码生成MD5摘要

def to_md5_hex(str):
    """ 生成MD5摘要"""
    return hashlib.md5(str.encode())

15. 保存登录用户的下相关信息

我们可以将登录用户的信息保存在Django框架提供的session对象中。

request.session['username' = user.username]

你可能感兴趣的:(Web后端开发第一周)