diango项目配置及问题解决

时间:2020-9-9 作者:admin


python版本:3.8

diango项目配置及问题解决


前言

系统软件版本号:
ubuntu版本:20.4
python版本:3.8
django版本:3.1
mysql版本:8.0

一、新建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__)

总结

总结是一个很好的加强记忆的过程,也方便自己回头看,同时还能帮助他人,一举多得。
以上是博主自己经过多次摸索,遇到问题、解决问题,并将过程记录如下,希望对其它刚入行的码农们有所帮助。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。