pycharm创建django项目常见问题
目录
目录
一.debug--TypeError: unsupported operand type(s) for /: ‘str‘ and ‘str‘,分析与解决
二.python点击run或者debug的时候出现Type ‘manage.py help <subcommand>‘ for help on a specific subcommand.
三.Django项目的settings.py文件中DEBUG参数置为False后,静态文件无法访问
四.Forbidden (Referer checking failed - no Referer.) 小程序访问djnago服务器报错referer检查未通过
一.debug--TypeError: unsupported operand type(s) for /: ‘str‘ and ‘str‘,分析与解决
在运行项目Django时候报TypeError: unsupported operand type(s) for /: ‘str’ and ‘str’,这是由于自动生成的代码中存在语法错误(在settings.py中的错误代码为 'DIRS': [BASE_DIR / 'templates']),将其修改为 'DIRS': [str.format(BASE_DIR, '/templates')],该问题原因是版本原因导致该处存在语法错误。其他的版本的pycharm创建后的目录拼接方式为:'DIRS':[os.path.join(BASE_DIR,'templates')],推荐使用第二种方法,这是使用os中的join函数进行拼接,可适应不同运行环境。
二.python点击run或者debug的时候出现Type ‘manage.py help <subcommand>‘ for help on a specific subcommand.
该问题是django项目运行需要默认参数,未添加参数直接点击run运行会报错。
其他参数添加方法类似
三.Django项目的settings.py文件中DEBUG参数置为False后,静态文件无法访问
参考博客:
关于Django setting.py 中设置DEBUG=False后静态文件无法加载_西奥斯的博客-CSDN博客
首先修改项目的setting.py文件
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
# 设置上传文件的路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
url.py中加入
from django.contrib.staticfiles.views import serve #static静态文件def return_static(request, path, insecure=True, **kwargs):return serve(request, path, insecure, **kwargs)
urlpatterns = [url(r'^static/(?P<path>.*)$', return_static, name='static'), # 添加这行
]
解释一下:我在url.py中写的return_static()的作用是代替 server() 为什么?以下是server()源码
def serve(request, path, insecure=False, **kwargs):if not settings.DEBUG and not insecure:raise Http404
server()默认情况下 insecure=False ,并且在关闭调试模式后都是 404。通过写个 return_static 函数其实与 --insecure 的选项是异曲同工的。
媒体文件的处理:
url.py中加入
from django.views.static import serve as static_serve # media媒体文件:注意这里引入的与上面的不同
urlpatterns = [url(r'^media/(?P<path>.*)$', static_serve, {'document_root': settings.MEDIA_ROOT}),
]
完整的url.py代码:
这是总路由里的 不是APP应用整的url
from django.conf import settings
from django.conf.urls import url, include
from django.contrib import admin
from imserver import urls
from django.contrib.staticfiles.views import serve #static
from django.views.static import serve as static_serve # media注意这里引入的与上面的不同def return_static(request, path, insecure=True, **kwargs):return serve(request, path, insecure, **kwargs)urlpatterns = [url(r'^admin/', admin.site.urls),url(r'^', include(urls)),url(r'^static/(?P<path>.*)$', return_static, name='static'),url(r'^media/(?P<path>.*)$', static_serve, {'document_root': settings.MEDIA_ROOT}),
]
四.Forbidden (Referer checking failed - no Referer.) 小程序访问djnago服务器报错referer检查未通过
该错误的前提是django服务器开启了CSRF安全防护机制,报错如下:
报错原因是Referer 检查失败,分析原因是发送的请求请求头虽然添加了X-CSRFtoken字段,但没有添加Referer,但查阅小程序文档发现,微信小程序的wx.request中不能添加referer字段。
因为小程序和服务器通信实际上是微信小程序-->腾讯服务器-->目标服务器,请求返回的路径刚好相反。
网络请求的 referer 是不可以设置的,格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版,版本号为devtools代表是开发工具发出的请求。
既然不能设置小程序端referer,那就要在django服务器端设置,通过查看官方文档发现settings.py中有一个参数:CSRF_TRUSTED_ORIGINS 可设置服务器信任的不需要验证的标头,所以将报错中出现的网址添加至上述参数中即可。
然后即可正常使用CSRF验证,关于小程序如何获取django服务器中的token可参考如下博客,
Django前后端分离csrf token获取方式 - 自学编程网
在请求头中添加X-CSRFToken后还需要添加cookies,这样才能正常验证。
pycharm创建django项目常见问题相关推荐
- pycharm创建django项目及开发初准备
文章目录 前言 一.使用pycharm创建django项目 二.初步设置 对文件进行简单说明 设置 app的介绍和创建及设置 app的创建 第一种方式 第二种方式(本质上还是命令,但是更加智能) ap ...
- 老鱼Python数据分析——篇十七:使用pycharm创建django项目
最近把基础的数据爬取和存储都学习完了,开始进行数据的显示,考虑到通用性,还是使用Web方式来显示数据吧. 所以接下来就开始django学习之路,因为django是一个免费并且强大的开源Web框架. 使 ...
- (一)使用pycharm创建django项目
一.打开PyCharm,新建项目 点击创建之后,PyCharm自动帮我们创建一个虚拟环境和安装最新版的Django. 安装成功之后,我们刚才指定的目录下就多出一个mysite文件夹.打开mysite文 ...
- pycharm创建django项目linux部署
大家好,我是烤鸭: pytho部署web项目比java简单一点,虽然springboot内置了tomcat. 环境: pycharm专业版python3.6 1.安装python python下载: ...
- 社区版pyCharm创建Django项目
社区版pycharm功能不完整,无法直接创建django项目,所以我们可以手动创建 1.先安装django,可以在pycharm中安装,也可以使用 pip install Django 安装 2.创建 ...
- 使用PyCharm创建Django项目及基本配置
https://segmentfault.com/a/1190000011576316 pycharm是个很不错的python开发工具,大大缩短了python项目的创建时间以及调试时间 在使用pyth ...
- pycharm创建django项目界面解释
- pycharm里创建django项目竟然没有django选项
首先,我当时出现的问题是newproject创建的时候没有django的选项,查了半天发现我安装的pycharm是社区版本 目前我知道的有俩种方法 方法一:安装专业版 注册码 官网网址 :PyChar ...
- Django讲课笔记03:创建Django项目
文章目录 零.本讲学习目标 一.课程导入 (一)Web框架 (二)WSGI 二.新课讲授 (一)使用内置指令创建Django项目 1.主要文件 (1)manage.py (2)init.py (3)a ...
最新文章
- 146亿美元!2018全球数字医疗投资创下新纪录
- gitbook 编辑手册
- client-go入门之3:解析 yaml 文件并创建 k8s 资源对象
- 插入排序 链表 java_JAVA单链表(多项式)直接插入排序,大家看看我的怎么不行呢...
- 2.1.4 进程通信
- aspnet网站开发实例_新手用户如何根据网站类型或应用场景选择云服务器?
- 统计学怎么求加权指数_我要自学生信之统计学:统计学概述(一)
- linux6.5进入救援模式,rhel6.5救援模式修复系统
- P1038-神经网络【拓扑排序】
- sqlmap指定cookie_sqlmap处理cookie数据
- CentOS/RHEL Linux安装EPEL第三方软件源
- CMD中文显示为乱码
- 基于连接跟踪机制的状态防火墙的设计与实现
- 【CS229 Deep Learning笔记】二. 介绍:分类问题
- 计算机四级网络工程师(操作系统单选)- 知识点
- Python内存映射文件读写
- 人工智能的十大应用方向是哪些?
- Centos6.8系统镜像下载
- 为啥Java程序员工资高,却很多人想转行,这4点原很现实
- 【破茧成蝶-用户体验设计】读书笔记