django入门配置与跨域访问

django主要内容

基本配置文件、路由系统

M模型、T模板、V视图

Cookies、session

分页、邮件

Admin管理后台

安装:pip install Django=2.2.12

项目结构

网页调试工具:F12、ctrl+shift+I

使用django-admin startproject mysite创建项目mysite

python manage.py runserver 开启服务(测试使用)

python manage.py startapp 创建应用

python manage.py migrate 数据库迁移

python manage.py 列出所有Django子命令

关闭服务:使用ctrl+c

Db.sqlte3:与数据库建立链接

init:python包初始化文件

wsgi.py:web服务网关的配置文件-Django正式启动时需要

urls.py:项目的主路由配置-http请求进入Django时,优先调用该文件

settings.py:项目的配置文件-包含项目启动时的配置

文件系统细节

settings.py:

包含共有配置与自定义配置:

BASE_DIR = “xxxxx“ 项目绝对路径

Debug=True:调式模式:代码改动后,页面立即刷新,并在网页中显示错误信息

ALLOW_HOSTS = [‘127.0.0.1’]:允许访问的地址

ROOT_URLCONF=’mysite1.urls’

DATABASES = {}:数据库配置

LANGUAGE_CODE=’zh-Hans’:中文

TIME_ZONE=’Asia/shanghai’

自定义配置中,建议名字个性化,防止重名

代码中使用、修改配置使用from Django.conf import settings 导入即可

url

protocol://hostname:port/path?key1=value1&key2=value2#fargment

protocol:协议

hostname:主机地址

port:端口号

path:主机文件、目录地址

query:查询,?表示,后接一系列键值对

fargment:定义信息位置,#表示

输入url地址后:

  1. 从配置文件中根据ROOT_URLCONF=’mysite1.urls’找到主路由文件,
  2. 加载主路由文件中的urlpattern变量,包含很多路由数组。
  3. 依次匹配urlpattern中的path。path(’page/2003/‘,view.page_2003_view),’page/2003/‘是请求名,view.page_2003_view是函数名
  4. 匹配成果响应,失败返回404

视图函数(后台接口)

一个用于接收htttp请求(httpRequest对象)并通过httpRespose对象返回响应的函数。

语法:

def xxx_view(request[,参数]):

​ return httpResponse

path转换器<>,包括int、str(除/之外的非空字符)、slug:数字、字母、下划线组成、path(匹配非空字符)

path('page/int:page',view.xxxx)

正则path:re_path()

请求与响应

请求案例

http请求会转化为HttpRequest对象

安装配置uwsgi

pip install uwsgi

(11条消息) uwsgi: error while loading shared libraries: libicui18n.so.58: cannot open shared object file_Alex-CSDN博客

which uwsgi

ldd /usr/anaconda/Anaconda/envs/WebTagging/bin/uwsgi

建立三个软连接

cp /usr/anaconda/Anaconda/lib/libstdc++.so.6 /lib64/

uwsgi配置文件uwsgi.ini

http=0.0.0.0:7896 只使用uwsgi时,使用http,0.0.0.0表示局域网访问,此时将allows_host表示可以访问服务的主机ip,未部署设置为*好测试。

socket=127.0.0.1:8000 使用ngnix时使用socket模式,127.0.0.1代表ngnix与uwsgi通信地址,即使用uwsgi在本机127.0.0.1:8000 上搭建服务,ngnix充当该接口服务与公网http请求的中介。
chdir=/mnt/dell/kangbowei/AI
wsgi-file=AI/wsgi.py
pidfile=uwsgi.pid
daemonize=uwsgi.log
master=True

启动服务:uwsgi --ini uwsgi.ini

关闭服务:uwsgi --stop uwsgi.pid ,重复开启服务导致无法关闭进程,需要手动杀掉进程(最小值)

查看对应进程:ps aux|grep 'uwsgi'

ngnix 安装 Nginx 安装配置 | 菜鸟教程 (runoob.com)

安装目录:/usr/local/webserver/nginx/sbin/nginx

跨域

什么是跨域:当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。

想要利用django框架实现前后端分离,首要的问题便是解决跨域请求的问题。

解决方法:

1.JSONP,比较原始的方法,本质上是利用html的一些不受同源策略影响的标签,从而实现跨域请求,但是这种方法只支持GET的请求方式

2.CORS,Cross-Origin Resource Sharing,是一个新的 W3C 标准,它新增的一组HTTP首部字段,允许服务端其声明哪些源站有权限访问哪些资源。换言之,它允许浏览器向声明了 CORS 的跨域服务器,发出 XMLHttpReuest 请求,从而克服 Ajax 只能同源使用的限制。在我们的django框架中就是利用CORS来解决跨域请求的问题。

Django中如何使用CORS

pip install django-cors-headers

修改django项目中的setting.py,添加如下两项。重新启动服务。

安装easyocr

pip install easyocr
posted @ 2022-05-23 22:25  killens  阅读(513)  评论(0)    收藏  举报