Django基础

web框架的本质

所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求,服务端按照http协议的响应协议来响应请求

socket模拟简单框架

import socket
from threading import Thread
from urls import dic
serve = socket.socket()
serve.bind(("127.0.0.1",8809))
serve.listen()
while 1:
    conn,addr = serve.accept()
    data = conn.recv(1024)
    path = data.decode("utf-8").split(" ")[1]
    conn.send(b"HTTP/1.1 200 ok \r\n\r\n")
    for url in dic:
        if url==path:
            t = Thread(target=dic[url],args=(conn,))
            t.start()
            break

Django下载、安装、配置:

下载

可以自己指定安装的版本号

pip install django==1.11.9

创建项目:

django-admin startproject 项目名称

创建应用:

python manage.py startapp 应用名称

启动项目:

python manage.py runserver 127.0.0.1:8001

配置settings

应用配置

INSTALLED_APPS结尾添加

应用名称.apps.App1Config'

数据库配置(mysql)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': "库名", 
        'USER': "用户名",
        'PASSWORD': "密码",
        'HOST': "IP地址",
        'PORT': 端口号,
    }
}

项目文件init文件中配置:

import pymysql
pymysql.install_as_MySQLdb()

静态文件配置

1.项目根目录下创建存放静态文件的文件夹

2.在settings文件中进行配置

STATIC_URL = '/static/' # 别名
STATICFILES_DIRS = [os.path.join(BASE_DIR,"静态文件的文件夹名")]

静态文件引入

<link rel="stylesheet" href="/static/css/index.css"> <!--引入css文件-->
<script type="text/javascript" src="/static/js/jquery.js"></script> <!--引入js文件-->

项目文件介绍

创建django项目后会在当前目录下会生成mysite的工程

  1. manage.py: Django项目里面的工具,通过它可以调用django shell和数据库,启动关闭项目与项目交互等

  2. settings.py :包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。

  3. urls.py : 负责把URL模式映射到应用程序。

  4. wsgi.py : runserver命令就使用wsgiref模块做简单的web server,后面会看到renserver命令,所有与socket相关的内容都在这个文件里面了

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9VzAQG1-1571193537505)(D:\笔记\assets\877318-20160724114201404-1121087959.png)]

django简单示例

# views.py
from django.shortcuts import render,HttpResponse

def login(request):
    if request.method == "GET": //处理GET请求相关
        return render(request,"login.html")
    else: // 处理费GET请求
        if request.POST.get("username") == "lai" and request.POST.get("password") == "123": 
            return render(request,"show.html")
            # return HttpResponse('登录成功')
        else:
            return render(request,"login.html")
            # return HttpResponse('失败')
def show(request,y,m):
    return HttpResponse(f"年:{y}月:{m}")
# urls.py
from django.conf.urls import url
from django.contrib import admin
from app1 import views
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login/', views.login),
    # url(r'^show/(\d+)/(\d+)/', views.show),
    url(r'^show/(?P<y>\d+)/(?P<m>\d+)/', views.show),
]
<!--login.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/login/" method="post">
    <input type="text" name="username">用户名<br>
    <input type="password" name="password">密码<br>
    <input type="submit" value="提交">
</form>
</body>
</html>
<!--show.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<a href="/show/2019/3">查看当前月份书籍</a>
<a href="/show/2019/4">查看上个月份书籍</a>
</body>
</html>

Django生命周期

在这里插入图片描述

wsgi:

全称Python Web Server Gateway Interface,指定了web服务器和Python web应用或web框架之间的标准接口,以提高web应用在一系列web服务器间的移植性

  • WSGI是一套接口标准协议/规范;
  • 通信(作用)区间是Web服务器和Python Web应用程序之间;
  • 目的是制定标准,以保证不同Web服务器可以和不同的Python程序之间相互通信
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值