django day1

发布时间 2023-04-20 21:50:16作者: yedayang

Django

目录

1.web应用

2.web手写web框架

3.动静态网页

4.web中三大主流框架

5.django版本

6.如何使用

8.命令行和pycharm创建django项目的区别

在应用app中如何写代码

10.django项目中主要文件介绍

11.django三板斧

12.DEBUG

web应用

#通过浏览器访问的应用程序!!

1.两种模式:C/S B/S模式
	B/S:browser----------->server
2.web应用程序的有点
	2.1只需要有一个浏览器即可
   	2.2节省资源
    2.3它们不需要更新,因为所有新的特性都在服务器上执行
    #客户端程序更新模式:1.全量更新2.增量更新
    2.4适合跨平台使用
3.web程序的特点
	#特别以来服务端程序的健壮性,言外之意即是一旦服务端宕机,web程序夜里吗宕机。
4.web框架
	#框架就是别人写好的模版我们只需要在模版中固定的位置书写代码即可
	#Django框架就是一款专门用来写web应用的框架

2.手写自己的web框架

#代码不需要掌握,重点在熟悉思路
B/S架构:
#浏览器-------->服务端
#用socket写一个服务端
#代码如下
#写一个服务端
import  socket

server = socket.socket()

server.bind(('127.0.0.1',8080))
server.listen(3)

print('开始接收客户端信息..............')
while True:
    conn,addr = server.accept()
    # 接收客户端发送的信息
    # 每一个服务端都应该遵循http协议
    data = conn.recv(1024)
    data = data.decode('utf8')

    list=data.split(' ')
    print(list)
    sen=list[1]
    conn.send(b'http/1.1 200 \r\n\r\n')
    conn.send(sen.encode('utf8'))
    conn.close()

3.动静态网页

1.静态网页
	#只有页面,数据是写死的没有和数据库进行交互,比如html文件
2.动态页面
	#页面中的数据是从数据库中查询出来的,会进行交互改变
    

4.web中三大主流框架

1.Django
	#特点:大而全(重量级的框架)里面自带了很多的功能和模块,里面也自带了很多的文件
    实现小型功能的时候不需要选择Django框架,
2.flask
	#特点:小而精(轻量级的框架),自身并没有多少的文件,它也一样可以做Django可以实现的功能
    它严重依赖第三方模块----->因此要不停地安装模块---->因此它非常依赖第三方模块
    #当它安装了足够多的模块时,它和Django也差不多大
3.tornado
	#特点:异步非阻塞,并且支持高并发
 '''我们目前学习Django框架,然后学习flask框架,框架很多,但都有很多相同之处因此不必全都去学习一遍,例如学习完Django再去学习flask会简单很多,只需要学习不同之处即可'''

5.Django版本

1.版本
	1.x 2.x 3.x
    #学习以1.x为主,附带学习2.x因为1.x和2.x大部分是相同的,在drf的学习必须使用2.x以上版本
2.安装Django
	cmd命令:pip install Django===1.11
    #我们自己安装的第三方模块都在lib/site-pacjages文件夹下面
3.如何验证ango是否安装成功
	#django-admin如果有反应说明安装成功;

6.如何使用

1.创建项目
	#1.命令行创建
    	'''你可以提前切换文件夹路径,用来存储django框架的文件位置'''
        django-adnub startproject 项目名
        django-admin startproject myfirst
    #2.pycharm创建
2.启动django项目
	#1.cmd启动
    	先切换路径到manage.py文件这一层下面,和manage.py同级
     python manage.py runserver#默认启动在本地电脑上
     也可以使用端口号启动
3.创建应用
	'''
	django框架就是一款专门用来开发web应用的
	django这个框架就类似于一所大学(空壳)
	应用相当于是一所大学里面的二级学院
	所以,应用可以是有多个的
	eg:我们使用django开发一个淘宝出来
		用户相关功能------user应用
		订单相关功能------order应用
		客服相关功能------kefu
		每一个应用就是一个独立的功能
	'''
    #每一个django项目至少要有一个应用!!
 4.如何创建应用
	#1.cmd创建:
    python manage.py startapp 应用名
    pythonmanage.py startapp app01
    #应用名都应该做到见名知意
   		#user、order等等
    #了方便教学,我们统一使用app01/02/03/04...
    #2.pycharm创建app方法!!!只能创建一个应用
    	2.1创建项目的时候一起创建,只能创建一个app
        2.2 tools->run manage.py task
        跳出一个框 在里面写startapp app03 先不要用,等熟练前面的命令后再用
5.应用创建出来之后第一件事:
	#去配置文件setting.py中去注册应用,以后没创建一个新的应用都要去setting里面注册,不然创建的应用不生效
	

7.注意事项

1.一个pycharm窗口打开一个django项目
2.以后django项目所有的文件名都不能出现中文

8.命令行和pycharm创建django项目的区别

1.cmd:不会自动生成templates文件夹
	#需要我们自己手动创建一个templates文件夹
1.2配置文件中setting中
    TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': []#默认没有东西
        ...}

2.pc:会自动生成templates文件夹
2.2配置文件setting中:
        TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR,'templates']#默认是这样。但需要改成[os.path.join(BASE,DIR),'templates']
###在配置文件中统一改成
        'DIRS':[os.path.join(BASE,DIR),'templates']

9.在应用app中如何写代码

创建完app并成功注册后
在urls路由中添加

urlpatterns = [
    url(r'^admin/', admin.site.urls),#这里一旦更改,项目自动重启这叫热更新
    url(r'^index/', views.index)#对应函数写在views.py中 def index(request)#必须加request参数不然报错
	#url方法的第二个参数一直写的都是函数的内存地址
]
浏览器加后置/index跳转执行
#django2.x版本中使用的不是url而是path,它是精准匹配,不支持正则表达式

10.django项目中主要文件介绍

djangoProject		#项目名称
    app01			#应用名称
        migrations	#它是数据库迁移记录------>跟数据库相关的时候会用到
        __init__.py#初始化文件
        admin.py	#跟后台相关的
       	apps.py		#跟注册一些东西相关的
        models.py	#这个是跟数据库相关的文件(重要)
        tests.py	#这个是测试文件
        views.py	#视图函数----》主要写一些功能逻辑
djangoProject
		__init__.py 
        settings.py	#django框架的配置文件
        urls.py		#路由文件,后缀和视图函数的对应关系
        wsgi.py		#是一个服务器------》wsgiref-----》uwsgi服务器:支持的并发量高(上线后更改至这个服务器)
templates
db.sqlite3			#django自带的数据库,方便我们测试使用
manage.py			#django的启动文件,也称入口文件
#入口文件 最开始执行的文件所有的业务都从这里开始 内含有__main__方法

11.django三板斧

DEBUG=True时;
1.HttpResponse
views.py中:
def func(request):
    ...
    return httpresponse('ok')#httprequest中只能填写str字符串 
2.	return render(request,'index.html')#index.html放在templates文件夹中 此时会加载至index。html页面
3.	redirect('http://www.baidu.com')#重定向
	3.2redirect('/home/')
    3.2此时在views中写def home(request): return HttpResponse('home页面')
	urls中也要添加url(r'^home/', views.home )

12.DEBUG

#setting中的DEBUG=True的话会将错误信息显示在页面中

若改为false则需要设置一个allow

上线前测试排查时可以是True,上线后就要改为False不能让用户看到
如果出错了就设置一个404页面给用户端跳转