Django 项目的创建及常见问题
对于STATIC_URL来说,后面的'/static/'相当于一种访问令牌,即 当访问的 URL 路径中包含了'/static/'时,Django 会自动地将URL 路径'/static/'后的字符 当做资源来查找,查找的路径就是我们手写STATICFILES_DIR列表中的路径,并且顺序是从前到后,查找到会立即返回,不会继续查找。对于我们拼接出的STATICFILES_DIR中的路径来说,毫无疑
目录
TypeError: unsupported operand type(s) for /: ‘str‘ and ‘str
启动前注意事项
- 计算机的名称,以及文件路径不要出现中文;(编码问题)
- 一个窗口只开启一个 Django 项目;
- python 解释器尽量使用 3.4~3.6 版本;
Django 下载版本推荐 .2.2.22 版本
验证 Django 是否安装成功:在终端中输入django-admin命令,看看是否有反应
Windows 电脑会默认在 C 盘中创建
可以在命令行中先切换路径,再创建。注意路径中尽量不要包含中文
命令行创建不会自动创建templates文件夹,需要手动创建,并且将文件夹的路径在settings.py中手动处理
具体处理方式参照下方 PyCharm 创建的方法
django基本操作命令
获取django版本
py -m django --version
创建项目
打开命令行,cd到想要创建的目录下,然后运行下边代码
django-admin startproject mysite
创建app
切到创建的项目目录下
python manage.py startapp polls
启动项目
切到创建的项目目录下
python manage.py runserver
命令行与pycharm的区别
命令行不会自动创建templates文件夹
命令行不会在配置文件编写关于templates文件夹的配置
‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)]
pycharm自动创建的第一个应用会自动注册到配置文件中
针对db.sqlite3文件不用去在乎它有没有创建 只要运行了django会自动出来
-mysite文件夹名称
| mysite同名文件夹 | |
| settings.py | 项目配置文件 |
| urls.py | 总路由层 |
| manage.py | 项目入口文件 |
| db.sqlite3 | 运行项目后自动创建(django自带的小型数据库) |
| templates文件夹 | 存储HTML文件 |
| 应用文件夹 | 通过命令创建(可以创建任意个数) |
| migrations文件夹 | 存储数据迁移记录 |
| admin.py | django提供的后台管理 |
| apps.py | 用于配置文件的应用注册(创建的应用都需要去配置文件中注册) |
| models.py | 模型层(与数据库相关) |
| views.py | 视图层(编写当前应用核心业务逻辑代码) |
| tests.py | 自带的测试文件 |
urls.py 路由层
views.py 视图层
templates 模板层
models.py 模型层
PyCharm 方式
创建Django项目

与命令行创建项目方式的区别
创建成功后与命令行方式创建对比

多了一个templates文件夹,在settings.py文件中PyCharm 方式会自动处理路径
相当于:
'DIRS': [os.path.join(BASE_DIR , 'templates')],

至于PyCharm 自动创建templates文件夹的方式,在于创建项目的时候会默认创建
同时,如果下面的Application name填入名称,会自动创建一个应用,并且应用会自动注册

启动Django项目


创建应用
方式一:命令行方式创建,pycharm 自带有Terminal

方式二:PyCharm 工具栏 Tools–Run Manage.py Task

静态文件配置
我们将 HTML 文件默认放在templates文件夹下;将网站所使用的的静态文件放在static文件夹下。
静态文件:前端已经写好的,能够直接调用的文件
已经写好的网站 js 文件、CSS 文件、图片文件、第三方的前端框架
Django 是不会自动创建static文件夹的,需要我们手动创建
可以直接将第三方框架直接放入 static文件夹下,也可以再建一个other文件夹存放。

静态文件资源接口配置
普通的功能接口,需要在urls.py中先做路由与视图的关联,再在视图层中写功能;
静态文件资源的配置就不需要那么麻烦!
在settings.py文件中需要手动书写配置,注意变量名全大写
# 拼接 static 文件夹路径,并且放入列表中
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
os.path.join(BASE_DIR, 'static1'),
os.path.join(BASE_DIR, 'static2'),
]
静态文件接口请求原理
在settins.py中,我们能够发现一个变量STATIC_URL
STATIC_URL = '/static/'
那么这里的'/static/'和我们手写的配置中最终拼接的static文件夹名有何关联呢?
对于我们拼接出的STATICFILES_DIR中的路径来说,毫无疑问的,就是静态文件所处的路径!
对于STATIC_URL来说,后面的'/static/'相当于一种访问令牌,即 当访问的 URL 路径中包含了'/static/'时,Django 会自动地将URL 路径'/static/'后的字符 当做资源来查找,查找的路径就是我们手写STATICFILES_DIR列表中的路径,并且顺序是从前到后,查找到会立即返回,不会继续查找也就意味着STATIC_URL 可以随意修改,只要在请求资源的时候,按照修改后的方式,再加上资源名,同样可以请求到.
静态文件实例
settins.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
os.path.join(BASE_DIR, 'static1'),
os.path.join(BASE_DIR, 'static2'),
]
static文件夹a.txt
from static
static1文件夹a.txt
from static1
static2文件夹a.txt
from static2
启动 Django 项目,并且请求资源

调换一下顺序, 并且修改一下令牌
STATIC_URL = '/xxx/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static2'),
os.path.join(BASE_DIR, 'static1'),
os.path.join(BASE_DIR, 'static'),
]

HTML 文件动态解析静态文件路径
在 HTML 文件中,需要导入的静态文件很多的时候,如果修改了STATIC_URL,那么每一个静态文件路径的前缀都要修改,十分麻烦

动态解析语法
{% load static %}
<link rel="stylesheet" href="{% ‘ 文件名 ’ %}">
<script src="{% ‘ 文件名 ’ %}"></script>
文件名会从STATICFILES_DIRS的路径中依次寻找
常见问题
1. TypeError: unsupported operand type(s) for /: ‘str‘ and ‘str
Django新建app时,报TypeError: unsupported operand type(s) for /: ‘str‘ and ‘str‘ 错误
报错提示:
解决方法:
点击最后一行的报错信息,定位
将/ 改成,

2. PyCharm 修改已经生成的 Django 项目的端口

3. 后端代码修改了,但是前端页面没有任何变化
有可能,同一个端口开启了好几个项目。比如用命令行和 pycharm 分别开启了,但是pycharm 的代码修改了,依然是按照命令行的方式运行的,所以保证一个项目不要同时被开启
最为常见的还是浏览器缓存的情况了
首先,右键-检查

勾选上之后,只要再次打开控制台时,点击页面刷新就会清除浏览器的缓存
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)