Django笔记
mac
/Library/Frameworks/Python.framework/Versions/3.9/bin/django-admin
创建项目
django-admin.py startproject newpro
1.启动django服务器命令(默认8080端口)
python3 manage.py runserver
启动 时指定 IP 地址和端口号的命令
python3 manage.py runserver 192.168.1.5:8001
post请求不想加注解的话,把Csrf的中间件注释掉(项目settings文件里)
链接映射有个类似flask的蓝图
主项目的urls.py 让他去demo应用的 urls文件继续找到,那么每个应用就可以独立有自己的路由了
from demo import urls
urlpatterns = [
path('task/',include(urls)),
]
应用的urls
from django.urls import path
from .views import SendSMSView
urlpatterns=[
path("send_sms/",SendSMSView.as_view(),name="send_sms"),
]
关闭Django多进程
官方文档解释django自带的server默认是多线程
测试
python3 manage.py runserver 0.0.0.0:8000
django开两个接口,第一个接口sleep(20),另一个接口不做延时处理(大概耗时几毫秒)
先请求第一个接口,紧接着请求第二个接口,第二个接口返回数据,第一个接口20秒之后返回数据
证明django的server是默认多线程
python3 manage.py runserver 0.0.0.0:8000 --nothreading
更多见Ddjango 资料 https://zhuanlan.zhihu.com/p/84014519
Django原始路由
from django.urls import re_path as url
url(r"^api/gethosts/$", get_hosts)
from django.http import JsonResponse
def get_hosts(request):
return JsonResponse({})
序列化返回的时间带T解决,在序列化器加上
class Uc_reportSerializer(serializers.ModelSerializer):
create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
update_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
打印每个请求的日志,在项目配置表中添加
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '[application] %(levelname)s %(asctime)s %(module)s %(message)s'
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'stream': sys.stdout,
'formatter': 'verbose'
},
},
'loggers': {
'app': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
},
}
其他函数调用django的函数的方法
import requests
# 视图的方法
def iterationCountMsg(request, *args, **kwargs):
iterationId = request.data
print(iterationId)
s = requests.Session()
s.data={"data":123123}
iterationCountMsg(s)
模版语法正常展示html标签
<!-- 使用safe过滤器 -->
<div>
{{ html_content|safe }}
</div>