Django模型
Django 模型
Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。
Django 为这些数据库提供了统一的调用API。 我们可以根据自己业务需求选择不同的数据库。
MySQL 是 Web 应用中最常用的数据库。
如果你没安装 mysql 驱动,可以执行以下命令安装:
pip install mysqlclient
conda install mysqlclient
连接MySQL驱动
mysqlclient
- python 2 , 3都能直接使用
- 致命缺点:对mysql安装有要求,必须指定位置存在配置文件
python-mysql
- python2支持很好
- python3不支持
pymysql
- python2,python3都支持
- 它还可以伪装成前面的库。
伪装
在django项目中的__init__.py
中添加
import pymysql
pymysql.install_as_MySQLdb()
或者
from pymysql import install_as_MySQLdb
install_as_MySQLdb()
作用是让Django的ORM能以mysqldb的方式来调用PyMySQL。
数据库配置
我们在项目的 settings.py
文件中找到 DATABASES 配置项,将其信息修改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django
'NAME': 'django', # 数据库名
'USER': 'root', # 账号
'PASSWORD': 'root', # 密码
'HOST':'127.0.0.1', # ip
'PORT':'3306', # 端口号
}
}
这里添加了中文注释,所以你需要在 HelloWorld/settings.py
文件头部添加 #-*- coding: UTF-8 -*-
。
上面包含数据库名称和用户的信息,它们与 MySQL 中对应数据库和用户的设置相同。Django 根据这一设置,与 MySQL 中相应的数据库和用户连接起来。
SQLite
- 轻量级的嵌入式级的数据库
特点是小
- 常用场景
- Android、ios、
- 数据库常规操作90%类似于
MySQL
定义模型
创建 APP
Django规定,如果要使用模型,必须要创建一个app。我们使用以下命令创建一个 App
的 app:
django-admin startapp App
目录结构如下:
HelloDjango
|-- App
| |-- __init__.py
| |-- admin.py
| |-- models.py
| |-- tests.py
| |-- views.py
接下来在settings.py
中找到INSTALLED_APPS
这一项,进行注册
,如下:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'App', # 添加此项
)
template(模板)配置
在App
下创建templates
文件夹,并编写hello.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<ul>
<li>今天</li>
<li>天气</li>
<li>很好</li>
<li>适合</li>
<li>睡觉</li>
</ul>
</body>
</html>
模板配置方式
两种:
在
app
中进行模板配置- 只需在app的根目录下创建templates文件夹即可。
- 如果想要代码提示,我们应该将文件夹标记为
template folder
在
项目目录
中进行模板配置- 需要在项目目录中创建templates文件夹并标记
- 需要在
settings
中进行注册
在开发中使用第二种,模板可以继承、复用。
用例
在项目的根目录下创建templates
,并添加home.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
今天天气晴朗,是个学习的好日子。
</body>
</html>
在settings.py中的TEMPLATES
中添加
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR,'templates'), # 添加目录,BASE_DIR是项目的绝对路径
],
'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',
],
},
},
]
在App
中的views.py中添加
def home(request):
return render(request,'home.html')
在项目目录
下的urls.py中添加
from django.conf.urls import url
from App import views
urlpatterns = [
url(r'^home/', views.home),
]
启动项目,并访问http://127.0.0.1/home/
View编写(Controller)
在App
下的views.py
编写如下:
def hello(request):
return HttpResponse('双击666')
def index(request):
return render(request,'hello.html')
路由配置
找到项目目录下的urls.py
,配置如下:
from django.conf.urls import url
from django.contrib import admin
from App import views # templates下的views.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^hello/', views.hello), # 添加url
]
启动项目
python manage.py runserver
访问网页http://127.0.0.1/hello/
路由优化配置
- 项目如果逻辑比较复杂可以进行
拆分
,拆分为多个app。 继续拆分路由器urls
在app中创建自己的urls
urlpatterns
路由规则列表- 在根urls中进行子路由的包含
子路由
的使用- 根路由的规则 + 子路由的规则
推荐使用子路由
。
步骤:
(1)在创建的App中创建urls.py
,然后添加以下内容:
from App import views
urlpatterns = [
url(r'^index/',views.index)
]
(2)在主目录下的urls.py
添加一下内容:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'App/',include('App.urls'))
]
启动项目,并访问地址:http://127.0.0.1:8000/App/index/
还没有评论,来说两句吧...