-
整体步骤如下:** 安装虚拟机和linux系统 --> 安装python3和pip工具 --> 安装虚拟环境 --> 在虚拟环境中安装django --> 使用django-admin创建项目 --> 使用manange.py启动和管理项目 --> 定义视图和url访问规则.
-
下载虚拟机. 基于系统下载正确的虚拟机. 笔者系统是windows10, 下载的是vmware15 (http://forspeed.onlinedown.net/down/newdown/4/26/VMwareworkstation.rar). 下载linux系统,笔者使用的是RHEL7. 先安装好vmware虚拟机,再创建虚拟机并安装RHEL7 linux 系统.请保证网络连通.
-
安装python3和pip
下载python3安装包,并安装.大致步骤为(configure --> make --> make test --> make install) 最后使用sudo权限或root用户安装,这样就不用考虑python3的路径问题. 安装过程中可能会出现缺gcc compiler. 可使用yum将缺的包都安装上. -
安装pip工具
#curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 获取get-pip.py脚本用来安装pip
#python3 get-pip.py -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com 使用aliyun的源,否则会非常慢,导致连接超时. -
搭建虚拟环境, 在虚拟环境中运行的好处是可以与其他项目分开.
#pip install virtualenv -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com #先安装virtualenv工具 使用阿里云的镜像,否则下载太慢
#mkdir django
#mkdir webproject
#virtualenv venv #创建虚拟环境 linux环境下会创建一个venv文件夹, venv可以改成其他名字
#cd venv/bin
#source activate #进入虚拟环境
(venv) [root@localhost bin]# -
在虚拟环境中安装dijango
(venv) [root@localhost bin]# pip install django==2.0 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com -
进入虚拟环境, 切换到webproject 文件夹,创建demo project,并runserver.
#cd webproject
#django-admin startproject demo
在demo文件夹下有如下文件:
setting.py 全局配置文件
urls.py 路由文件
wsgi.py 是服务器和框架间的桥梁
manage.py是入口文件
#cd demo
#python3 manage.py runserver [端口号] #server 已经启动 可以指定端口号,默认端口号8000. 可以创建不同的webproject,运行在不同的端口.
有时候可能会出现No module named _sqlite3的错误,此时需要重新安装yum install sqlite3-devel包,并重新安装python3. 正常情况下,你可以在浏览器中输入127.0.0.1:8000登录网页了. -
让server在后台运行,关闭shell依然有效
nohup python manage.py runserver 0.0.0.0:8000 >djo.out 2>&1 & -
数据迁移,创建超级用户管理后台
在cmd中ctrl+C退出服务器.
执行数据迁移
#python manage.py migrate
创建超级管理员
#python manage.py createsuperuser
输入密码 -
安装mariadb,并启动mariadb服务.修改root用户密码, 先删除空用户
mariadb安装后,使用mysql -u root -p 登录后修改密码.
mysql> set password for ‘root’@‘localhost’ = password(‘gnzzh12345’);
mysql> create database demo default character set utf8;
安装python的数据库驱动模块
#pip install pymysql -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
可以在虚拟环境安装,也可以在真实环境安装.
并修改demo/文件夹下的__init__.py文件.加上下面语句
import pymysql
pymysql.install_as_MySQLdb() -
创建app
#python manage.py startapp app1
会创建app1文件夹
app1文件夹下有
admin.py 管理后台
apps.py 配置应用
models.py
记得将aap1添加到setting.py配置文件
INSTALLED_APPS = [
…
‘app1’,
]
如果不加到 INSTALL_APPS 中的话, django 就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件) -
在app1中添加数据模型并修改数据库选项
ORM object 对象 关系 映射
先在demo文件夹下的setting.py 中修改DATABASE选项.修改
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’, #modify to mysql
‘NAME’: ‘demo’,
‘USER’: ‘root’,
‘PASSWORD’:‘gnzzh12345’
}
}在app1文件夹下的models.py文件中创建数据模型, 创建person和order两张表.
class CreateUpdate(models.Model):
create_at = models.DataTimeField(auto_now=True)
update_at = models.DataTimeField(auto_now=True)
class Meta:
abstract=Trueclass Person(CreateUpdate):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)class Order(CreateUpdate):
order_id = models.CharField(max_length=30)
order_desc = models.CharField(max_length=120) -
创建表,现在就可以在django中创建表了.
切换到demo文件夹, 执行#python3 manage.py makemigrations #生成迁移文件
#python3 manage.py migrate #在demo中创建person和order表,
在app1目录下的admin.py文件中添加如下内容:
from app1.models import Person, Order
class PersonAdmin(admin.ModelAdmin):
list_display = (‘first_name’, ‘last_name’)
list_filter = (‘first_name’, ‘last_name’)
search_filed = (‘first_name’)
admin.site.register(Person, PersonAdmin)
启动runserver,就通过http://127.0.0.1:8000/admin管理后台了. -
创建视图, 即创建可访问的页面
在app1文件夹中修改views.py 文件. 注意要导入httpresponse
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse(‘Welcome to my site’)
第一行引入HttpResponse,它是用来向网页返回内容的,就像Python中的 print 一样,只不过 HttpResponse 是把内容显示到网页上。我们定义了一个index()函数,第一个参数必须是 request,与网页发来的请求有关,request 变量里面包含get或post的内容,用户浏览器,系统等信息在里面。函数返回了一个 HttpResponse 对象,可以经过一些处理,最终显示几个字到网页上。
定义视图函数相关的URL(网址) , 在demo文件夹下的urls.py文件中进行修改.
要先导入app1下的view模块,否则找不到对应的视图
from app1 import views as app1_views
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(“index”, app1.views.index) #app1
]
现在你就可以通过http://127.0.0.1:8000/index来访问网页了.
以上步骤可以帮助你搭建django的基本框架结构,想要设计合格的django项目.还需进一步学习.