Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站!官方网站:Meet
Django
一、环境准备(centos7.4):
# yum install python-django -y //安装django(我装的是djang2.0版本)
# yum install mariadb mariadb-server //安装数据库(5.5版本)
# systemctl enable mariadb.service //开机自启
# systemctl start mariadb.service //启动mysql
# mysql_secure_installation //初始化数据库及密码
后续需要连接数据库,所以要安装mysql驱动
:
因为我使用的是python3.6
版本,已经不支持MYSQLdb
模块,所以安装pymysql
模块:
# pip install PyMySQL //安装mysql驱动
注:因为django
默认只识别MYSQLdb
模块,因此安装了pymysql
模块后在下面同步数据库步骤前需要改下配置,详情见下面步骤;
若python2.7
请安装MySQL-python
,python3.4
请安装python34-mysql
测试模块是否安装成功:
python2.7/3.4:
>>> import MYSQLdb
python3.6:
>>> import pymysql
如果没有报错说明模块安装成功。
如果不安装此模块,后续启动项目连接数据库(mysql)会报错:Error loading MySQLdb module
二、基本命令:
为了方便管理,可以单独创建一个目录,用于存放新项目,cd到新目录中,执行命令项目默认存放在当前目录下。
1、新建一个 django project项目(例如:fxy_blog)
# mkdir /fxy
# cd /fxy
# django-admin startproject fxy_blog //项目名字只支持下划线和字母
新项目目录结构如下:
fxy_blog/ //项目名字
├── fxy_blog //包含项目中实际的Python代码
│ ├── __init__.py //默认为一个空文件,定义了此目录为一个python包
│ ├── settings.py //此项目的配置
│ ├── urls.py //此项目中URL的一些声明
│ └── wsgi.py //WSGI兼容的Web服务器为此项目提供服务的入口点
└── manage.py //一个命令行实用程序,可让与此Django项目进行交互
注:
django-admin
是Django的用于管理任务的命令行工具;manage.py
会在每个Django项目中自动创建。manage.py
与django-admin
处理的事情差不多,但是也有不同:django-admin and manage.py
2、启动测试
这时,我们有了一个自己的项目,可以启动测试一下:
# python manage.py runserver
然后你会看到以下输出:
Performing system checks...
System check identified no issues (0 silenced).
December 11, 2017 - 09:52:22
Django version 2.0, using settings 'fxy_blog.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
上面只是允许本机访问,如果允许所有人访问执行:
# python manage.py runserver 0.0.0.0:8000
监听端口可任意更改。
现在已经运行,在浏览器中输入http://114.215.157.174:8000/
会看到恭喜页面,还有一个绿色的小火箭,说明项目开始工作啦!
报错解决:执行启动命令后,浏览器访问可能会报错DisableALLOWED_HOSTS字样(忘记截图了),这时需要修改文件:
# vim /fxy/fxy_blog/fxy_blog/settings.py
找到ALLOWED_HOSTS
,修改为ALLOWED_HOSTS = ['*']
然后重新启动项目。
不过有一个项目是仅仅不够的,我们需要有自己的网页~
3、新建一个django app应用程序(例如:web)
# django-admin startapp web
或
# python manage.py startapp web
项目和应用程序有什么区别?
一个应用程序是一个Web应用程序,它执行一些操作,例如Weblog系统,公共记录数据库或简单的应用程序。 项目是特定网站的配置和应用程序的集合。 项目可以包含多个应用程序。 一个应用程序可以在多个项目中。
新应用程序目录结构如下:
web
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
url.py:urls.py本质上就是一个标准的python文件,这个python文件的作用就是在URL请求和处理该请求的视图函数之间建立一个对应关系,换句话说,它就是一个url请求映射表。参考:Django中关于URL配置文件urls.py的理解
4、编写我们的第一个view
打开文件web/view.py
,然后输入下面的python代码:
# vim web/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the web index.")
要调用这个视图,需要映射到URL,在web目录中创建一个urls.py
的文件,web目录结构如下:
web
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py
编辑web/urls.py
文件,添加如下代码:
# vim web/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
下一步是将根URL配置文件指向web.urls
模块。
在fxy_blog/urls.py
中,为django.urls.include
添加一个导入,并在urlpatterns
列表中插入一个include()
,如下:
# vim fxy_blog/urls.py
from django.urls import include, path
from django.contrib import admin
urlpatterns = [
path('web/', include('web.urls')),
path('admin/', admin.site.urls),
]
现在我们已经把index view关联到了URL配置文件中,让我们来验证一下,执行:
# python manage.py runserver 0.0.0.0:8000
在浏览器中输入http://IP:8000/web/
,你会看到 “Hello, world. You’re at the polls index.”字样,证明你成功了!
5、连接数据库
文章开头说过python3.6支持pymysql模块,但是django不识别,需要修改:
fxy_blog/fxy_blog/__init__.py
在里面输入以下内容并保存:
python
import pymysql
pymysql.install_as_MySQLdb()
修改数据库连接:
# vim /fxy/fxy_blog/fxy_blog/settings.py
找到DATABASES
字段,修改成:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', //连接数据库类型
'NAME': 'test', //数据库名称
'USER': 'root', //用户
'PASSWORD': '123456', //数据库密码
'HOST': '127.0.0.1', //主机
'PORT': '3306', //数据库端口号
}
}
然后保存退出
数据库类型可选:
django.db.backends.sqlite3
,django.db.backends.postgresql
,django.db.backends.mysql
, ordjango.db.backends.oracle
或其他:Database Backend
执行以下命令:
# python manage.py migrate
如果没有python报错说明没问题~
6、清空数据库
# python manage.py flush
7、创建超级管理员
# python manage.py createsuperuser
按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填。
修改用户密码可以用:
# python manage.py changepassword username
设置好管理员,就可以登录django后台管理页面管理一些用户和组:
在浏览器输入http://IP:8000/admin/
,输入刚才创建的管理员账号和密码登录。
8、导出数据 导入数据
# python manage.py dumpdata appname > appname.json
# python manage.py loaddata appname.json
9、Django 项目环境终端
# python manage.py shell
10、数据库命令行
# python manage.py dbshell
app文件:将新的app加入到 new_project/settings.py #加入新app
view文件:新建app目录下:learn/views.py #写明需求模块
url文件:新建项目的子目录下:new_project/urls.py #调用需求模块显示在网页上