diango项目配置及问题解决

更新时间:2020-09-23 15:31:13 点击次数:1415次
一、新建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__)

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!