从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件

01 -Django框架安装和基本介绍

发布:蔺要红07-07分类: Python

 

1、浏览器和服务端通信都要遵循一个HTTP协议(消息的格式要求)

2、web框架的本质:socket服务端 与 浏览器的通信

3、socket服务端功能划分:

a. 负责与浏览器收发消息(socket通信)  --> 模块:wsgiref/uWsgi/gunicorn...
   WSGI协议:用来a和bc通信
b. 根据用户访问不同的路径执行不同的函数
c. 从HTML读取出内容,并且完成字符串的替换  --> jinja2(模板语言)

4. Python中 Web框架的分类:

按上面三个功能划分:
        1. 框架自带上面分类的:a,b,c               --> Tornado
        2. 框架自带上面分类的b和c,使用第三方的a    --> Django
        3. 框架自带上面分类的b,使用第三方的a和c    --> Flask
按另一个维度来划分:
           1. Django   --> 大而全(你做一个网站能用到的它都有)
           2. 其他     --> Flask 轻量级

 

官方网站https://docs.djangoproject.com/zh-hans/2.1/

版本选择:


5、首先Django安装(cmd命令行下)

pip install django==1.11.11
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple   django==1.11.11	

豆瓣:http://pypi.douban.com/simple/
清华:https://pypi.tuna.tsinghua.edu.cn/simple
6、其次Django_pycharm下安装


7、添加环境变量


8、新建Django项目(Pycharm下以及命令行下)
#命令行创建(首先进入): django-admin startproject web01 (web01为项目名称)
进入项目目录:  python3 manage.py startapp app         (创建app目录,名字可以叫做app也可以起一个和业务相关的)


9、Django初始状态下目录结构介绍


10、Django的运行和框架流程
1、python manage.py runserver ip:8000
2、python manage.py runserver 8000
3、直接在pycharm启动:点绿色的小三角,直接可以启动Django项目(前提是小三角左边是你的Django项目名),默认8000端口
   #可以点击--绿色小三角前面项目名称--选择(edit)--编辑配置端口

框架流程


11、setting.py初学
setting.py中   注释  # 'django.middleware.csrf.CsrfViewMiddleware',
初学注释,学到后面再打开

Django新建app
app   -->应用 如:京东(家电业务/办公用品/男装/女装/儿童装)

#创建
在Django项目的根目录执行:python manage.py startapp app名字

​#配置 setting.py文件

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'appweb.apps.AppwebConfig'        #新建app需要配置此项,如果新建项目的时候就已经创建了app,Django会给自动加上
]

Django配置HTML目录
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]  #配置html目录
        ,
...
...
]

Django配置静态文件
#配置静态文件相关
STATIC_URL = '/static/'  #别名
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),  #真正的目录
    os.path.join(BASE_DIR, 'static2'),
]
#说明:
<link rel="stylesheet" href="/static/css/font-awesome.min.css">
#html页面通过别名static按照顺序(DIRS是列表有序)、查找下面配置的静态目录
#一般傻缺才配置多个,一个就够了,写的一摸一样就行

13、Django中必备的三种返回方法
from django.shortcuts import HttpResponse,render,redirect 

HttpResponse  用来返回内容,直接返回数据
return HttpResponse('Hello Linyaohong') 

render #返回一个html文件或进行字符串替换(和html配合使用)
return render(request, 'html/login.html') 
return render(request, 'html/login.html',{"error": error_msg})   #{“key1”“:value1}
return render(request, 'html/user_list.html',{"user_list": ret})

redirect #跳转url
return redirect("/user_list")  #本网站跳转url
return redirect("https:www.baidu.com")     #跳转其他链接

request.method   #请求方法
request.POST     #获取POST请求的所有数据

14、Django中的ORM(用类对象数据库的表)连接数据库、创建表,删除表,修改,操作数据--增删改查

Django配置ORM
python语法   --自动翻译-->  SQL语句
# 配置数据库相关ORM 
#--------------------01-模块安装---------------

cmd:  pip install pymysql  或者在 pycharm里安装

#--------------------02-setting.py------------------------     
                   
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '10.10.10.30',
        'PORT': 3306,
        'NAME': "myweb",
        'USER': 'root',
        'PASSWORD': '111111'
    }
}

#--------------------03__init__.py------------------------

import pymysql
pymysql.install_as_MySQLdb()

ORM使用步骤
1、首先数据库需要自己先创建好:create database 数据库名;

2、在setting.py里配置数据库(上文已贴配置文件)

3、配置Django用pymysql代替默认的MySQLDB 连接MySQL数据库
   项目目录/核心目录(和项目名称样)底下的  __init__ 导入pymysql
   import pymysql
   pymysql.install_as_MySQLdb()

4、在app下面的models.py文件中定义一个类,这个类必须继承models.Model
class Userinfo(models.Model):
		id = models.AutoField(primary_key=True) #创建一个自增的主键
        # unique 唯一的不为空的字段
		name = models.CharField(null=False,max_length=20,unique=True)    #创建一个varchar(可以保存可变长度的字符串)类型不能为空

5、进入项目根目录执行如下命令:
python manage.py makemigrations           
python manage.py migrate                 #把改动翻译SQL语句,去数据库执行
如果要删除表:注释-执行两条命令即可

1. 查询
	models.UserInfo.objects.all()
	
2. 增加
	models.UserInfo.objects.create(name="张三")

对应关系

 
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站