Python-web项目的介绍,Django使用

Web开发与认识

web开发

  • web 全球广域网,万维网,给用户提供一个可视化的界面
  • web开发
    • web前端开发
      • 开发一些页面 结构(html) 样式 css 行为 js在这里插入图片描述
    • web后端开发
      • 提供数据的支持,处理用户的请求

上述流程:

request:请求

response:响应

地址:URL

https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1572582922039&di=353aa54ade32e4b6f1eca3c89102931f&imgtype=0&src=http%3A%2F%2Fpic22.nipic.com%2F20120728%2F6424304_184652450376_2.jpg

  • http

    • https
  • baidu.com 一级域名

    • www.baidu.com 二级域名

    • api.xxx.com

    • api.xxx.cn club

  • www.xxxx.com/static/image/aaa.jpg

处理业务:视图

​ 处理业务请求,返回响应

Django认识与安装

django简介

框架: 对同一类代码的封装

python写的框架

Django特点: 大

  • 优点
    • 重量级的框架,提供了丰富的功能组件,开发变得简单,快捷
    • 完善的文档
      • https://docs.djangoproject.com/en/2.2/
      • https://docs.djangoproject.com/zh-hans/2.2/
    • 开发效率快
  • 缺点
    • 开发不够灵活,不能够胜任高度定制化得开发

django的安装

为什么使用虚拟环境?

​ 便于管理, 避免不必要的麻烦

如何选择虚拟环境

  • anaconda

    • 不需要安装python

    • 创建的虚拟环境可以选择python版本

    • 解决依赖关系

    • 创建虚拟环境
      conda create -n 虚拟环境的名字 python=3.5.2
      
      启动虚拟环境
      activate 虚拟环境的名字
      退出虚拟环境
      deactivate
      
  • virtualenv

    • 安装python
    • virtualenvwarpper
      • workon 虚拟环境的名字
      • makevitualenv 虚拟环境的名字

安装django

django版本: 2.2.1

python 3.5.2

mysql 5.7

版本如何选择;

LTS 长期版本支持 长期维护

  1. 进入虚拟环境

    1. activate DjangoPath
  2. pip安装

    pip install django==3.5.2

  3. 查看django版本

    1. 进入python环境

    2. python
      import django
      django.VERSION
      

Django使用

创建工程

  1. 创建一个文件夹 project
  2. 激活虚拟环境
    1. activate DjangoPath
  3. 创建工程命令
    1. django-admin startproject 工程名

启动项目:

进入工程目录: 跟manage.py 同级目录

激活虚拟环境

执行命令: python manage.py runserver

django服务默认启动在 8000端口

在这里插入图片描述

​ python manage.py runserver 启动服务,使用的是django自带的服务器,支持的最大并发量是200,经常用来做开发,测试使用。

python manage.py runserver

python manage.py runserver 127.0.0.1:9000

python manage.py runserver 0.0.0.0:9000

使用pycharm 打开服务

在这里插入图片描述

选择编译环境

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

pycharm启动服务

在这里插入图片描述

Django目录结构

在这里插入图片描述

|-Demo     项目工程目录
	|-Demo    项目的主目录
		|- __init__.py   项目初始化文件 
		|- settings.py   项目的配置文件
		|_ urls.py       项目的路由文件
		|- wsgi.py       项目的部署服务文件
	|- db.sqllit3        数据库
    |- manage.py         项目的管理文件,负责:启动项目,数据迁移

项目配置文件的介绍

"""
Django settings for Demo project.

Generated by 'django-admin startproject' using Django 2.2.1.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
# 项目的根目录,方便开发人员使用
# os.path.abspath  绝对路径
# os.path.dirname  文件所在目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# print(BASE_DIR)
#

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
## 秘钥
# SECRET_KEY = '#0^_--5gljl*@sp!x8grz*whz@@%-rqd!wan8rdzx6_$qx_afk'
SECRET_KEY = 'fdsfds111'

# SECURITY WARNING: don't run with debug turned on in production!
## 调试模式
## True 开启调试模式
## 开启调试模式: 1.更改django代码,自动重启服务   2. 显示错误信息,请求信息
DEBUG = True

# 允许访问的主机
ALLOWED_HOSTS = ['*']


# Application definition
## 注册app的   注册子应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

## 中间件  中间人
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',
]

## 路由的根目录
ROOT_URLCONF = 'Demo.urls'

### 模板的配置
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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',
            ],
        },
    },
]

## django内置服务器
WSGI_APPLICATION = 'Demo.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

## 数据库相关的配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators

## 权限认证
AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

## 语言
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'
## 时区
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'   ## 上海时区

## 翻译系统 
USE_I18N = True
## 数据本地化配置
USE_L10N = True
## 是否使用指定的时区
## True 使用django 默认时区   内置时区
## Flase 使用指定的时区
USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

## 静态文件的配置
STATIC_URL = '/static/'

python manage.py runserver 0.0.0.0:8000

全局配置文件

在这里插入图片描述

第一个页面

需求: 浏览器访问: 127.0.0.1:8000/index 能够拿到 hello world 页面

步骤:

  1. 先写urls.py

    1. path(“index/”,函数名)
    2. path(“字符串或者是正则表达式”,要执行的函数或者类)
  2. 在项目的主目录中创建一个 views.py

  3. views.py 写一个函数

    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("hello world")
    

urls.py 路由文件

  • 负责匹配用户的请求,分发任务

views.py 视图,负责处理用户的请求,返回一个响应
在这里插入图片描述

请求流程:

在这里插入图片描述
在这里插入图片描述

原因:django2.2版本之后,如果增加了路由,之前的/ 不能够再拿到 django提供页面

问题1:
在这里插入图片描述

排错思路:

  1. 查看路由是否写错
  2. 模板文件是否正确
  3. settings文件是否配置正确

django排错
在这里插入图片描述

设计模式

设计模式: 降低代码的耦合性,增加了可扩展,可移植

django MVT设计模式,同时遵循MVC设计模式

MVC

  • M model 数据模型,提供数据的支持,封装了对数据库的访问
  • V views 视图,用于封装结果,生成html页面,提供页面支持
  • C 控制器 controller 接受用户请求,处理请求,与model和views进行交互,返回结果
    在这里插入图片描述

MVT

  • M 和MVC中M一样,模型,提供数据的支持,封装了对数据库的访问

  • V 视图,和MVC中C相似,负责处理请求,返回响应

  • T Template模板,和MVC中的V相似,负责封装响应,提供页面支持
    在这里插入图片描述

路由中使用正则

在这里插入图片描述

正则

"""
正则:是一种字符串的处理方式,用于匹配字符串

字符串的匹配两种:
内容匹配:
    通过描述要匹配内容的类型,长度,获取匹配到的结果
    re
结构匹配:
    xpath 爬虫
    通过描述要匹配的内容,在整体中的结构去匹配到想要的内容
"""
import re
###   re.findall()  返回列表,返回的结果是所有符合条件的结果
###  内容匹配
## 类型匹配   原样匹配 . \d \D \w \W [] | ()
## 长度匹配   * ? + {}
## 特殊匹配   ^ $


string = "hello \n world 123 ___ "
# 原样匹配
# res = re.findall("hello",string)
# print (res)
# .  除了  \n 的 所有字符
# res = re.findall(".",string)
# print (res)
# \d  匹配的是数字
# res = re.findall("\d",string)
# print (res)
# # \D 除了数字
# res = re.findall("\D",string)
# print (res)
# \w  数字  字母   _
# res = re.findall("\w",string)
# print (res)
#
# # \W 非数字  非字母 非_
# res = re.findall("\W",string)
# print (res)
# []  返回括号中的任意一个字符
res = re.findall("[a-zA-Z0-9]",string)
print (res)
## ^ 代表取反
res = re.findall("[^a-zA-Z0-9]",string)
print (res)
# # |  或者
#
# res = re.findall("hellowewewe|world",string)
# print (res)
# string = "hello \n world 1235 12 45 7 h ___ "
# # () 组匹配  ()后面的是条件
# res = re.findall("(\d)\d",string)    ## 34h       56h      2wh
# print (res)
# P 起一个组名
# string = "132 244 363 578"
# res = re.findall("(?P<id>\d)\d",string)    ## 34h       56h      2wh
# print (res)
# # (?P=id) 使用 id的值
# res = re.findall("(?P<id>\d)\d(?P=id)",string)    ## 34h       56h      2wh
# print (res)


#   长度匹配   * ? + {}
# string = "hello \n world 123 ___ "

# *   匹配  0次或多次
# res = re.findall("\d*",string)
# print (res)
# + 匹配一次或多次
# res = re.findall("\d+",string)
# print (res)
# ? 匹配 0次或1次
# res = re.findall("\d?",string)
# print (res)
# {}  匹配指定次数
# res = re.findall("\d{3}",string)
# print (res)


## 特殊匹配   ^ $
# ^  开始  匹配开头
# string = "hello \n world 123 ___ "
# res = re.findall("^hello",string)
# print (res)

# $ 结束   匹配结尾
# res = re.findall(" $",string)
# print (res)

路由中要使用正则表达式

django 2.0版本之前默认使用正则

导入re_path

  • ^$ 匹配 ,常用作首页
  • 组匹配 讲匹配的结果作为参数传到 视图中
    在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值