django2 mysql配置_django2.2简单配置-mysql

本文详细介绍了如何在Django2.2中配置MySQL数据库,包括安装pymysql,设置数据库配置,创建模板和静态资源目录,处理字体时区,创建模型,迁移数据库,注册模型到admin,以及处理常见错误。同时,文章还展示了简单的路由配置和views.py视图文件编写,帮助读者理解Django的基础操作。
摘要由CSDN通过智能技术生成

一. 主要演示django2.2如何配置mysql数据库

1.安装pymysql模块

pip isntall pymysql

2.在setting中注释掉默认的数据库.添加mysql配置

import pymysql

pymysql.install_as_MySQLdb()

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': 'mysite',

'HOST': '47.104.124.214',

'USER': 'root',

'PASSWORD': 'django',

'PORT': '3306',

}

}

3.setting文件添加app应用

INSTALLED_APPS = [

'xxxxxx',

]

4.修改字体时区

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

5.创建模板目录及静态资源存放目录并添加配置

在app同级目录下创建目录

mkdir templates

mkdir static

TEMPLATES = [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

'DIRS': [os.path.join(BASE_DIR,'templates')],

},

]

在setting中最后添加

STATIC_PATH = os.path.join(BASE_DIR,'static')

STATICFILES_DIRS = (STATIC_PATH,)

6.配置mysql创建数据库-----重点

cat models.py

from django.db import models

#创建一个User表

class User(models.Model):

user = models.CharField(max_length=30)

passwd = models.CharField(max_length=30)

def __str__(self):

return self.user

class Meta:

db_table = 'User'

verbose_name = '用户表[User]'

verbose_name_plural = '用户表[User]'

#__str__是python的一个魔幻方法。作用于django管理界面用于将数据库中的记录展示为易读的字符串。

#Meta类用于定义表名称。默认表名称为'app名称_表名称',db_table用于指定表名

#verbose_name用于在admin界面单数显示,verbose_name_plural复数形式显示。中文单数复数一般不做区别。

#verbose类似于User表在admin界面的显示形式。类似于别名

7.生产数据库:切记手动创建数据库且设置数据编码为utf8

python manage.py makemigrations #生产差异数据文件

python manage.py migrate #生产数据表

python manage.py createsuperuser #创建管理员root

8.注册数据库:

vi admin.py

from django.contrib import admin

from . import models

admin.site.register(models.User)

9.python manage.py runserver 0.0.0.0:80 开启服务

查看admin界面User表显示的为‘用户表[User]’。此属性与我们verbose_name设置有关

0d14d36d9391f61dc5d4569db13aa3bc.png

查看数据,数据显示的为我们的定义名称。此属性与我们__str__函数返回的return self.user字段有关。

f27cf1ebad40a31c4b8d0f9bc6091a6e.png

表名称默认为'app名称_表名'由于我们通过db_table = 'User'指定了表名所以创建为User表。

d243de622ef903afed39fcf51e2eedbf.png

二. 简单演示路由配置和views.py视图文件编写

简单编写views.py

from django.shortcuts import render

from django.http import HttpResponse

def index(request):

return HttpResponse('Hello, world. You\'re at the polls index.')

在app下创建路由文件urls.py

from django.urls import path

from . import views

urlpatterns = [

path('', views.index,name='index'),

]

在最外层项目路由文件中配置:

from django.contrib import admin

from django.urls import path,include

urlpatterns = [

path('',include('Registration.urls')),

path('admin/', admin.site.urls),

path('Registration/',include('Registration.urls'))

]

02211617c92164abff31f7d62c08b492.png

三问题汇总:

报错1:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is requ

ired; you have 0.9.3.

解决:

vi Python36-32\Lib\site-packages\django\db\backends\mysql\base.py

注释一下内容:

#if version < (1, 3, 3):

# raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

vi Python36-32\Lib\site-packages\django\db\backends\mysql\__init_.py

插入一下内容

import pymysql

pymysql.install_as_MySQLdb()

报错2

File “/home/wuchunhui/.virtualenvs/sss/lib/python3.5/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/wuchunhui/.virtualenvs/sss/lib/python3.5/site-packages/django/db/backends/mysql/operations.py

将一下内容注释

#if query is not None:

# query = query.decode(errors=‘replace’)

# return query

报错3:

File "D:\Python\Python37-32\lib\site-packages\django\views\debug.py", line 332, in get_traceback_html

t = DEBUG_ENGINE.from_string(fh.read())

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: illegal multibyte sequence

解决:

打开django/views下的debug.py文件,转到line331行:

with Path(CURRENT_DIR, 'templates', 'technical_500.html').open() as fh

将其改成:

with Path(CURRENT_DIR, 'templates', 'technical_500.html').open(encoding="utf-8") as fh

就成功了。

报错4:

Please enter the default value now, as valid Python

You can accept the default 'timezone.now' by pressing 'Enter' or you can provide another value.

The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now

Type 'exit' to exit this prompt

解决: 选择1执行:timezone.now()

报错:5 删除数据库后无法重建0.删除数据库

1.删除app下migrations除了:_init_.py和_pycache_之外的其他所有内容3.python manage.py makemigrations #生产差异数据文件

python manage.py migrate #生产数据表

python manage.py createsuperuser #创建管理员root

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值