Django常见问题

551 阅读2分钟

配置文件

from django.conf import settings
settings.HTL     #配置中的变量全部大写,即为常量

配置路由

from django.urls import path,include
#path 等值匹配

from django.conf.urls import url,include
#url 正则匹配
urlpatterns = [
	url("^predict$",model_predict), #执行视图函数
	url("^(\d+?)$",model_predict),  #捕获组,捕获到的内容以位置参数传给视图函数
	url("^(?p<key>\d+?)$",model_predict),#命名组,关键字传参
]

视图函数执行时,在项目根目录下

定义的视图函数等,均在包里,而包里是不能有执行的主程序的

视图返回json数据有中文,浏览器显示不出的问题

使用浏览器接收 json时,显示不出,解决:

from django.http import HttpResponse,JsonResponse
from django.shortcuts import render,redirect
data = {"code":200,"data":"请求成功"}
return JsonResponse(data)
#直接使用浏览器页面接收,会不能显示中文
#但是requests请求却可以正常解析出中文
#res.josn()
#改为
return HttpResponse(json.dumps(data,ensure_ascii=False))
#不指定content_type="application/json"也行

或者使用ajax异步 接收json

模板填充数据

给模板字典类型的数据,在页面内部直接使用{{ key }}

return render(request,"app1/index.html",data_dict)

#在页面内,直接使用字典的key
#{{key}}  双层大括号获取变量的值
#{% for i in key%} 模板语句

局域网访问django

默认运行的ip,port--->127.0.0.1:8000

指定ip,port运行:

python3 manage.py runserver 192.168.214.1:8000

在settings文件中配置:ALLOWED_HOSTS = ['*']

修改ubuntu虚拟机网络连接方式:桥接

局域网通过:192.168.214.1:8000访问服务器.

返回中文响应乱码

#视图
#request 请求对象
def user_register(request):

    return HttpResponse("用户注册",content_type="text/html",status=200)

乱码: 在这里插入图片描述 解决方案: 不指定 “content_type” 参数

无法迁移数据库

python3 manage.py makemigrations
python3 manage.py migrate

#无迁移动作

解决:

  1. 删除要更改的数据库
  2. 删除应用中migrations/ 下的迁移文件 ,注意不是__init__.py
  3. 重新迁移

发送HTTP请求

r = requests.get("http://127.0.0.1:8000/xjsys/v1/user/reg")

#可以获得  response
r.status_code
r.content  #字节串
r.text # 解码后的字符串
r.encoding = "utf-8"  #猜测的编码

上一篇:Django框架
下一篇:Django的路由