Content
该系列文章源码来自: 博主第一次手撸博客(Django)
温馨提示: 该系列教程不提供前端布局和美化方面的内容, 博主本行是后端, 在我的项目中前端部分采用的框架是Materialize
, 是谷歌Material Design
设计风格的前端框架, 欲知详情请点击上方提供的仓库地址, 源码采用WTFPL许可证开源
开发环境
- 操作系统:
Manjaro Linux 18
- Python版本:
Python3
提示: Manjaro把Python3作为默认的Python版本, 其他发行版可能默认版本是Python2, 如果默认为Python2, 以下出现的Python和pip命令请使用python3和pip3
- Django版本:
v2.1.5
- 主力IDE:
PyCharm
(使用教育邮箱激活) - 辅助Editor:
Visual Studio Code
pip 换源
- 我们选用清华源, 因为包含pacman-mirrors (Arch系用户眼神暗示)
- 官方换源文档: 清华源pipy镜像使用帮助
- 已经入门的Linux用户对各种换国内源应该已经轻车熟路了, 我向新手推荐几个常用的国内的开源镜像站: 中科大源, 清华源, 我个人常用的就这两个, 主要用中科大源. 有人刚点进去可能就要问了, 我该怎么使用呢? 很简单, 页面的右侧一般有
下载系统镜像
和配置软件源
的按钮, 清华源则可以查看相关链接
中的使用帮助
, 很多网站都有类似的帮助页面, 比如说非常著名的Arch Wiki
, 是Arch新手入门的官方指南.授人以鱼不如授人以渔
, 我就不直接放出帮助页面的链接了, 希望大家能用脑中的常识和智慧
解决问题, 而不是用嘴
解决问题.
安装 Python-Django 库
- 终端执行:
pip install Django==2.1.5 --user
==版本号
可以安装指定的版本, 避免一些不必要的兼容问题.
加上--user
的意思是以普通用户的身份进行安装, 否则会显示权限不足(因为Python的文件夹权限所致), 或者前面加个sudo
也能顺利安装.
创建项目
- 打开PyCharm, 点击菜单栏左边第一个
File
->New Project
->Django
- 看到Django项目的面板, 项目位置不用多说, 下面的第一个
Project Interpreter
选项是选择当前项目的Python环境, 第一个New environmnet using
是使用虚拟环境的, 我在刚开始看Django入门文档的时候嫌麻烦就没去详细了解 (懒
是科技第一生产力), 也没去使用, 我一直用的是下面的Existing interpreter
, 即实际的现有环境. - 下面的
More Settings
点开,Template Language
选默认的Django
,Templates folder
即放置HTML模板的地方, 默认的templates
即可, 接下来的Application name
, 如果后面懒得在终端里敲命令去创建一个App应用
的话, 在这里写了会自动创建的, 最后的Enable Django admin
, 保持默认的打钩
状态, 因为在后面的开发中要多次使用这个Django框架自带的admin后台管理模块 - 点击
create
就可以开始了
settings.py && urls.py 里面的初始设置
- 在
settings.py
先滑到最下面, 看到有一个static
, 即静态文件夹的设置, 编辑成如下所示:
1 | # Static files (CSS, JavaScript, Images) |
那么在上方的注释中, 第一行是说明, 这个默认创建的静态文件夹可以放css, js && 图像文件, 但是出于强迫症晚期和方便文件整理的考虑, 我们在下面创建一个
/media/
文件夹, 专门存放图片, 这个文件夹只放css, js或者是其他的前端库文件夹. 第二行注释是设置静态文件夹的官方文档, 如果说你在setting.py里面想自定义一些东西是不知道怎么改, 先找你要改动的地方有没有这样的注释, 如果有, 按住Ctrl键
鼠标左击链接就可以直接用默认浏览器打开这个链接了, 如果没有, 自觉使用Google && Bing必应, 为什么不说百度? 厌了
注: 上述的
ctrl+点击
来打开链接的方式普遍见于许多环境中, 比如Linux终端
, 众多的IDE和Editor. 简单一句话, 常规操作 (授人以鱼不如授人以渔 x2)
- 创建一个跟
/static/
文件夹同级(绝对路径和相对路径的概念应该understand吧)的/media/
文件夹, 在静态文件夹设置项目的后面追加以下代码:
1 | # Media files |
注: 关于为什么这么写, 在前面的讲解中应该已经明白了, 点开注释中的链接就知道了.
- 接下来在
urls.py
中添加如下代码:
1 | from django.conf.urls.static import static |
注: 这个from开头的引入语句应该放在哪里, 我相信有点Python基础的人应该都知道. 如果不在
urls.py
里面声明/media/
为静态路径的话, 图片将无法显示(即没有相应的静态资源url)
- 最后来设置数据库, 我由于学习需要, 不采用默认的
SQLite
, 也不用在上个项目中使用的老牌数据库PostgreSQL
, 而是选用MySQL
, 找到配置数据库的位置, 把原来用于SQLite
的配置代码注释掉(不要轻易删掉以后可能会用到的代码!)
, 写入新的, 如下所示:
1 | # Database |
注: 想知道为什么这么写吗? 详见注释中的链接 (重要的事情说三遍)
安装 MySQL && 创建 Database
友情提示: 从8.0.14开始, MySQL在Manjaro上缺少运行依赖, 现在很有可能安装后无法正常运行, 推荐使用Arch官方现在一直在维护的MariaDB, 相关文档: Arch Wiki - MariaDB
在
Arch
的官方文档中(Arch && Manjaro 一家亲)
,MariaDB
是Arch
官方定义的MySQL
的默认实现,Arch
官方已经不再支持MySQL
, 转而支持MariaDB
(关于MySQL和MariaDB的故事, 有兴趣的可以在Google或者Bing必应上搜一下, 百度我已经很少用了), 但是我偏偏就是要装MySQL
, 不慌, 在Arch cn
源中有现成的包, 关于添加Arch cn
源: 中科大Arch Linux CN源使用帮助以下是安装步骤(全程终端):
sudo pacman -S mysql
安装完成后在终端中会显示以下提示:
1
2
3
4
5
6
7正在安装 mysql-clients (8.0.11-1)...
正在安装 mysql (8.0.11-1)...
:: You need to initialize the MySQL data directory prior to starting
the service. This can be done with mysqld --initialize command, e.g.:
mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql
:: Additionally you should secure your MySQL installation using
mysql_secure_installation command after starting the mysqld service那么需要执行上述的两条命令来初始化MySQL
初始化MySql数据目录/注意记录root临时密码(以下操作如果无法显示初始化失败, 请在命令的最前面加上
sudo
):mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql
, 注意记录root用户的临时密码查看MySql状态:
sudo systemctl status mysqld
, 这时候不出意外是没有开启的小贴士: 善用
Tab键
自动补全启动MySql服务/开机自启:
sudo systemctl start mysqld
,sudo systemctl enable mysqld
此时可以再次查看一下
mysqld.service
是否启动注:
.service
后缀可以省略,Tab键
自动补全时会带上.service
后缀账户安全设置/需要使用root临时密码登陆(执行不成功请加上
sudo
提权):mysql_secure_installation
后面的操作, 能看懂基本的单词和语句应该几下子就搞完了
接下来创建一个新的Database:
进入MySQL:
mysql -u root -p
输入root用户密码:
Enter password:****** # 登录后进入终端
创建Database:
CREATE DATABASE 数据库名;
(注意结尾一定要打分号!)查看Database:
show databases;
, maybe是这样的:1
2
3
4
5
6
7
8
9
10
11mysql> show databases;
+--------------------+
| Database |
+--------------------+
| blog |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)创建完成, 检查一下在
setting.py
中的设置数据库的各个参数是否一致
安装 python-mysqlclient 库
- Django框架由于是Python库, 需要一个
桥梁
去连接 Django && MySQL - 安装:
pip install mysqlclient --user
, 加上--user
的意思是以普通用户的身份进行安装, 否则会显示权限不足(因为Python的文件夹权限所致), 或者前面加个sudo
也能顺利安装小贴士: 在这里不建议使用图形化的
pamac
或者 在终端使用pacman
包管理器去安装, 博主在这里踩了坑, 如果这么安装的话, 那么在执行下面的python manage.py migrate
时, Django框架会一直报错说你没装, Linux日常玄学问题233
模型迁移
打开
PyCharm
的终端 或者Linux终端
, 在这个项目文件夹内, 执行python manage.py makemigrations
, 如果提示Do you install XXXX
, 即问你是否安装了叫XXXX的Python库时, 用上一步的方法安装即可. 执行成功了应该是刷出了一堆东西然后告诉你OK了小贴士:
makemigrations
太长? 善用Tab键
自动补全执行
python manage.py migrate
, 完成迁移
创建超级用户
- 由于在后面需要多次使用admin后台管理模块, 所以需要一个权限最大的超级用户方便操作和开发 (老话说得好:
root一时爽, 一直root一直爽
) - 执行
python manage.py createsuperuser
小贴士:
createsuperuser
太长了? 善用Tab键
自动补全 - 输入用户名和密码应该是小意思了, 建议不要太长, 后面测试登录页面以及需要登录后才能使用的页面时, 你会知道是什么感觉的(#手动滑稽)