一、新建django工程
1.启动虚拟环境
usrname@ubuntu:~$ workon 虚拟环境名称
注:仅有一个虚拟环境时,Tab键两次,可直接快速输入环境名称;当有多个虚拟环境时,Tab键两次,会罗列出所有的虚拟环境名称。
2.创建工程目录
(demo)usrname@ubuntu:~$ mkdir 工程
(demo)usrname@ubuntu:~$ cd 工程
注:建议创建一个工程目录,因为同一虚拟环境可以有多个工程。
3.创建工程
(demo)usrname@ubuntu:~/project$ django-admin startproject 工程名称
注:执行完后,会在project文件夹中生成一个project同名文件夹和一个manag.py文件,project文件夹中,有__init__.py,asgi.py,settings.py,urls.py和wsgi.py五个文件。
. project
//工程
. project
//工程名称
.__init__.py
. asgi.py
. settings.py
. urls.py
. wsgi.py
. manag.py
4.创建应用
(demo)usrname@ubuntu:~/project$ python manage.py startapp 应用名称
注:执行完成后,会生成一个应用文件夹,文件夹中有migrations文件夹和__init__.py,admin.py,apps.py,models.py,tests.py和views.py六个文件。
. project
//工程
. appname
//应用名称
.migrations //数据库迁移文件
. __init__.py
. __init__.py
. admin.py
. apps.py
. models.py //模型文件
. tests.py
. views.py //视图文件
. project
//工程名称
. manag.py
二、mysql配置
1.setting文件更改
打开project文件中的setting.py文件,修改如下:
DATABASES = {
'default': {
#'ENGINE': 'django.db.backends.sqlite3',
#'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.mysql',
'NAME': 'demo_db',
'USER': 'root',
'PASSWORD': '******',
'HOST': 'localhost',
'PORT': 3306,
}
}
2.__init.py__文件更改
打开project文件中的__init__.py文件,添加如下内容:
import pymysql
pymysql.install_as_MySQLdb()
三、其它配置修改
1.注册应用
打开project文件中的setting.py文件,修改如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'appname', //应用注册
]
2.创建模板文件
在应用文件夹中新建templats文件夹,并在templats文件夹中创建appname文件夹,在appname文件夹中创建index.html文件。
. project
//工程
. appname
//应用名称
. migrations //数据库迁移文件夹
. __init__.py
. admin.py
. apps.py
. models.py //模型文件
. tests.py
. views.py //视图文件
. templats //模板文件夹
. appname //应用同名文件夹
. index.html //模板文件
. project
//工程名称
. manag.py
3.模板配置路径修改
打开project文件中的setting.py文件,修改如下:
EMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [Path.joinpath(BASE_DIR, 'templates')],//配置路径修改
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
4.创建静态文件
在项目文件夹中新建static文件夹,并在static文件夹中创建css、js、images文件夹。
. project
//工程
. appname
//应用名称
. migrations //数据库迁移文件夹
. __init__.py
. admin.py
. apps.py
. models.py //模型文件
. tests.py
. views.py //视图文件
. templats //模板文件夹
. appname01//应用同名文件夹
. index.html //模板文件
. appname02//应用同名文件夹
. index.html //模板文件
. static //静态文件夹
. css //存放css文件
. images //存放图片文件
. js //存放js文件
. project
//工程名称
. manag.py
5.静态文件配置路径修改
打开project文件中的setting.py文件,修改如下:
STATIC_URL = '/static/'
STATICFILES_DIRS = [Path.joinpath(BASE_DIR, 'static')] //新增
6.配置urls.py文件
打开project文件中的urls.py文件,修改如下:
from django.urls import path, include //增加include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('appname.urls')),//新增配置项,匹配到的内容会被去掉,不再匹配
# path('a', include('appname.urls')),//匹配到的内容a会被去掉,不再去应用中的url中进行匹配
]
或
# from django.urls import path //注释掉
from django.conf.urls import url, include
//新增
urlpatterns = [
url(r'admin/', include(admin.site.urls)),
url(r'^', include('appname.urls')),//新增配置项
]
注:两种尝试过都可以正常运行。
7.应用文件夹中新建urls.py文件
在应用appname中新建urls.py文件,增加如下内容:
rom django.conf.urls import url
//新增
from booktest import views
//新增
urlpatterns = [
url(r'^index$', views.index) //新增
]
四、运行服务器
(demo)usrname@ubuntu:~/project$ python manage.py runserver
五、问题解答
1.pymysql未安装问题
在虚拟环境中,通过如下命令安装:
pip install pymysql
2.工程文件夹中__init.py__未配置问题
提示虚拟环境中未安装mysqlclient。
import pymysql
pymysql.install_as_MySQLdb()
3.setting.py文件中NAME路径问题
配置中的NAME属性不能参照sqlite3写成:‘NAME’: ‘BASE_DIR /demo_db’,否刚会出如下错误:
TypeError: unsupported operand type(s) for +: 'PosixPath' and 'bytes'
4.mysqlclient版本太低问题
在虚拟环境当前工程的目录下,运行如下命令启动服务器:
python manage.py runserver
会出现如下报错问题:
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
……
……
……
File "/home/usrname/.virtualenvs/test/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 36, in <module>
raise ImproperlyConfigured('mysqlclient 1.4.0 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required; you have 0.10.0.
原因是因为django所需的mysqlclient版本号较高,需我们用pip安装的mysqlclient版本目前只有0.10.0版本,此时需要运行
vi /home/usrname/.virtualenvs/test/lib/python3.8/site-packages/django/db/backends/mysql/base.py
//raise上面有base.py的绝对路径
将base.py文件中的36、37关于版本号检查注释掉保存设置即可:
34 version = Database.version_info
35 #if version < (1, 4, 0):
36 # raise ImproperlyConfigured('mysqlclient 1.4.0 or newer is required; you have %s.' % Database.__version__)
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。