Django的配置使用

发布于:2023-01-08 ⋅ 阅读:(437) ⋅ 点赞:(0)

1. 程序安装

(1)安装Django:

pip install django

(2)配置系统环境
成功安装Django后,在python目录script路径可找到django-admin.exe文件,将它加入操作系统环境变量中。这样以后调用会比较方便。

环境变量实例 C:\Users\10294\AppData\Roaming\Python\Python39\Scripts
运行查看命令 django-admin help

在这里插入图片描述

2. 创建Django项目

新建个文件夹,cmd进入该目录,输入以下代码

django-admin startproject Jira_Integrate_Automation

项目创建完毕,如下图

3. 创建APP

在项目根目录输入命令

python manage.py startapp Jira_Automation

 app创建完毕如下图

将新增的APP添加到setting.py中

4. ALLOWED_HOSTS

修改创建项目时生成的setting.py文件

ALLOWED_HOSTS = []改为ALLOWED_HOSTS = ['*']

ALLOWED_HOSTS是一个字符串列表,代表了这个Django网站可以服务的主机名或域名。这是为了阻止HTTP Host头攻击而采用的一种安全措施,这种攻击即使在很多看上去很安全的服务器配置下依然能够成功。

这个列表中的值,可以是全名(比如: 'www.example.com'), 在这种情况下,它们会直接与所要求的Host头进行匹配(大小写不区分,不包括端口号)。如果一个值以点号开始,则可当做一个子域名通配符:'.example.com'会匹配'example.com', 'www.example.com', 以及example.com的其它任意子域名。如果有'*'这个值,那么它会匹配任何字符串,在这种情况下,你就需要提供你自己的Host头验证机制(可能是在一个中间件中;如果真是这样,那么这个中间件就必须放在MIDDLEWARE列表的第一位)

Django也支持任一条目的域名全称。有一些浏览器在Host头中会包含一个结尾点号,Django在执行host验证时会过滤掉它。

如果Host头(如果启用了USE_X_FORWARDED_HOST,则是X-Forwarded-Host)不匹配列表中任何一个值,那么 django.http.HttpRequest.get_host()方法会抛出SuspiciousOperation异常。

当DEBUG设为True,且ALLOWED_HOSTS为空时,会使用**['localhost', '127.0.0.1', '[::1]']**来验证Host头。

这个验证只会通过get_host()方法来执行,如果你的代码是通过request.META直接访问Host头,那么你就绕开了这一层安全保护。

 5. 编写视图函数

路由转发用户请求到视图函数。视图函数处理用户请求,也就是编写业务处理逻辑,一般都在views.py文件里。下面是GET请求和POST请求的示例,request.POST(只能获取表单数据) 、 request.body(获取非表单数据) 是django原生的属性,request.data(包含表单及非表单数据)则是DRF封装的属性:

import os

from django.shortcuts import render

# Create your views here.
import requests
import json
from django.http import HttpResponse



def my_api(request):
    dic = {}
    if request.method == 'GET':
        dic['message'] = 0
        return HttpResponse(json.dumps(dic))
    else:
        dic['message'] = '方法错误'
        return HttpResponse(json.dumps(dic, ensure_ascii=False))

# 接口函数
def post2(request):
    if request.method == 'POST':  # 当提交表单时
        dic = {}
        # 判断是否传参
        if request.POST:
            a = request.POST
            print(a,'有传参')
            return HttpResponse('有传参')
        elif request.body:
            a = request.body
            print(a,'有body传参')
            with open('测试的jira.json', 'w', encoding='utf-8') as f:
                f.write(str(a))
                f.close()
            return HttpResponse('有body传参')
        elif request.date:
            a = request.date
            print(a,'有date传参')
            return HttpResponse('有date传参')
        else:
            print('输入为空')
            return HttpResponse('输入为空')

    else:
        print('方法错误')
        return HttpResponse('方法错误')

6. 编写路由

路由是浏览器输入url,在Django服务器响应url的转发中心。路由都写在urls文件里,它将浏览器输入的url映射到相应的业务处理逻辑也就是视图。简单的urls编写方法如下图:

from django.conf.urls import url
from Jira_Automation import views  #这里添加视图的路径
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
    path(r'my/api',views.my_api,name='my_api'),
    path(r'my/api/hello2',views.post2,name='post')
]

7. 运行web服务

现在我们已经可以将web服务运行起来了。

命令行的方式是:

python manage.py runserver 0.0.0.0:8000

8.数据库迁移

python manage.py migrate
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到