什么是DjangoDjango是劳伦斯出版集团的开发人员为开发新闻内容网站而设计出来的一个软件,它遵循MVC思想,但是有自己的一个名词,叫做MVT。
Django遵循快速开发和DRY原则。Do not repeat yourself.不要自己去重复一些工作。
Django是一个基于Python的高级web开发框架
它能够让开发人员进行高效且快速的开发
高度集成(不用自己造轮子),并且免费开源
知识补充
正常上网流程
浏览器浏览网页的基本原理
本质是网络通信,即通过网络进行数据传递
浏览器经过通信后获取到该页面的源代码文档
浏览器解析文档后以适当的形式展现给用户
请求响应过程
创建一个新的虚拟环境mkvirtualenv django_venv
在虚拟环境里面安装Djangopip3 install django
创建Django项目django-admin startproject 项目名
进入到项目中,会发现里面有一个manage.py和一个名字为项目名的文件名
用tree命令查看目录结构如下:
各文件的作用:
__init__.py: # 说明test1是一个python包.
settings.py: # 项目的配置文件.
urls.py: # 进行url路由的配置.
wsgi.py: # web服务器和Django交互的入口.
manage: # 项目的管理文件(通过启动这个文件来启动项目)
在项目中创建一个应用python3 manage.py startapp 应用名
注册应用,让项目知道有这个应用
建立应用和项目之间的联系,需要对应用进行注册。
修改settings.py中的INSTALLED_APPS配置项。
启动项目
运行开发web服务器命令:
python3 manage.py runserver
默认启动的结果
使用mysql替换默认的sqlite3
在项目名下的settings.py找到DATABASES,修改如下代码:
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql', # 将sqlite3修改为mysql
'NAME': '数据库名',
'USER': '数据库账户',
'PASSWORD': '数据库密码',
'PORT': 3306, # mysql的端口,默认是3306
'HOST': '127.0.0.1' # 主机地址
}
}
在项目目录下的__init__.py中添加如下代码:
import pymysql
pymysql.install_as_MySQLdb()
当我们生成迁移文件的时候,会抛出一个异常:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
解决办法如下:
找到编辑我们的Django的虚拟环境下的以下文件:
vi ~/PyEnvs/django_venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py
用/if version找到代码并将之注释掉
# if version < (1, 3, 13):
# raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
然后用:wq保存即可!
但是还是会出现另外的一个异常:
File "/home/hcs/PyEnvs/django_venv/lib/python3.6/site-packages/django/db/backends/mysql/operations.py", line 146, in last_executed_query
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'
根据报错的提示,我们可以看到去编辑如下文件:
vi /home/hcs/PyEnvs/django_venv/lib/python3.6/site-packages/django/db/backends/mysql/operations.py
将其中query = query.decode(errors='replace')的 decode 改为 encode
修改时区
在项目名下的settings.py修改如下代码:
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
然后重新启动项目即可看到项目界面变成了中文.
本文章修改于 2019/11/01 16:16:27