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 <url>  --   绑定远端仓库
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('<h1>Hello,Django!</h1>')    # 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文件的最前面

例:
<img src="{% static 模板对象.静态资源属性 %}">

14. 将密码生成MD5摘要

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

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

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

request.session['username' = user.username]
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容