前言
本项目准备采用Django + bootstrap开发一个稍微复杂一丢丢的博客网站,除了日常发布写博客和发布博客的功能之外,还应包含功能:登录注册,用户关注,点赞,内容推荐和权限管理
步骤
1. 需求分析
按照前言所说,本项目至少要完成以下需求:
- 项目名称myblog。
- 主页中显示每篇文章的标题、摘要和发帖日期。
- 主页中加入侧边栏,可以加入自定义的HTML以及JS代码,就是一些菜单栏之类的。
- 可以正确显示markdown文件。
- 主页提供用户登录注册。
- 博客可以被用户点赞、关注。
- 拓展功能:权限管理和内容推荐。
2. 版本信息
首先需要安装python,django库,virtualenv虚拟环境等。
安装过程我就不赘述了,本项目相关库版本如下:
- 操作系统:windows 7
- Pycharm:2019.2
- Python:3.7.4
- Django:2.2.7
- bootstrap
- virtualenv
3.开始项目
先在pycharm中找到你的工作目录,打开terminal,开启安装好的虚拟环境:
source VENV/bin/activate
然后输入以下命令创建项目:
django-admin startproject myblog # 创建项目
cd myblog
python manage.py startapp blog # 创建APP
cd ..
tree myblog /f # 显示目录树,Linux下不用/f
可以看到整个项目的目录树如下:
E:\WORKSPACE\GITHUB\PROJECT\MYBLOG
│ manage.py # 命令行工具,用于与Django项目的交互
│
├─blog # APP
│ │ admin.py
│ │ apps.py
│ │ models.py # 模型,用于与数据库交互
│ │ tests.py # 用于编写测试用例
│ │ views.py # 视图函数,用于设计后台逻辑
│ │ __init__.py
│ │
│ └─migrations # 保存由Django生成的影响数据库的命令
│ __init__.py
│
└─myblog
│ settings.py # 项目配置
│ urls.py # 项目的URL声明
│ wsgi.py # 项目与wsgi兼容的web服务器入口
│ __init__.py
│
└─__pycache__
settings.cpython-37.pyc
__init__.cpython-37.pyc
其实这个时候是可以直接运行的了,命令行输入以下命令:
cd myblog
python manage.py runserver
接着打开浏览器,输入127.0.0.1:8000,就可以看到Django默认页面了。
4. 创建超级用户
先ctrl+c退出命令行运行的服务,先生成有关用户信息的数据库。
python manage.py migrate
成功的话会输出如下:
(venv) E:\workspace\github\project\myblog>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
接着输入以下命令创建超级用户,这样就可以登录Django自带的后台管理系统了。
python manage.py createsuperuser
接着会提示输入用户名,邮箱,密码等,邮箱可以直接回车不用输入,密码如果小于8个字符的话会提示确认,输入y确认即可。
(venv) E:\workspace\github\project\myblog>python manage.py createsuperuser
Username (leave blank to use 'user'): root
Email address:
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is too common.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
5.添加app、修改时区和中文编码
打开settings.py文件,在INSTALLED_APP中添加app,见最后一行:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # 添加这一行
]
然后找到以下两行,并做修改:
# LANGUAGE_CODE = 'en-us'
# TIME_ZONE = 'UTC'
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
# 并且将这一行注释,如果后续用MySQL数据库并且部署到Linux服务器上时,可能会导致前端显示数据不正常。
# USE_TZ = True
6.后台管理系统admin
输入以下命令运行网站:
python manage.py runserver
在浏览器输入 127.0.0.1:8000/admin 可以进入Django自带的后台管理系统,输入前面设置的账号密码,可以登录admin看到后台管理系统。
7.显示Hello World
7.1 myblog/urls.py
首先在myblog/urls.py中编写如下内容:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
7.2 blog/urls.py
接着在blog目录下创建urls.py文件,并编写如下内容:
from django.urls import path
from . import views
app_name = 'blog'
urlpatterns = [
path('', views.index),
]
7.3 blog/views.py
from django.shortcuts import HttpResponse
def index(request):
return HttpResponse("Hello World!")
7.4 启动网站
命令行输入:
python manage.py runserver
浏览器访问127.0.0.1:8000就可以看到Hello World啦!
8.项目保存到GitHub
在GitHub上创建仓库myblog,复制仓库https链接,然后在命令行中输入:
git init # 确保是在工程目录myblog下
git remote add origin https://github.com/K4ys0n/myblog.git # 这个链接就是上面复制的https连接
接下来保存本地仓库,并且推送到远程仓库
git add .
git commit -m "first commit, create a project"
git push -u origin master
可以登录到GitHub查看是否推送成功,此后用git push推送时就只要git push而不用加上-u origin master了。
后记
工程初步完成,接下来开始完善各个部分,过程中可能会遇到各种问题,也会遇到很多参数也好,函数也好,不一定在本项目遇到,但是可以做笔记记录。
下一章建立models模型,同时也做一下models模型的学习。