centos7 django建项目流程与项目与应用配置文件联系
以前整理的流程因为期末考试的原因都比较散,现在考完,直接在vm用centos过了一遍django流程,谨记于此
首先呢就是环境的配置,在centos7上最好使用python3进行django学习建站,并将安装包pip工具升级到最新,
cnetos7终端创建django项目并为项目使用python3自带的venv创建虚拟并激活虚拟环境(项目的运行即是在虚拟环境中运行,相当于与系统上的python环境隔离开来,只不过虚拟环境的各种第三方库是需要重新安装的):
django-admin startproject centosdjango
cd centosdjango
python -m venv venv
source venv/bin/activate
#在虚拟环境中安装一下django必要的库(这里由于本机使用p3.6,安装django2.0,并且django1.11与django2.0之间项目配置文件之间会有许多不同)
pip install django==2.0
pip install pillow
pip install pymysql
pip install requests
至此运行项目就可以在本机端口查看项目了,不过啥都没有
#可以在项目文件夹中修改settings.py文件修改时区与语言
下面开始创建应用
#此操作会在项目文件夹所在目录创建应用文件夹包含应用所需要的必要配置文件
python manage.py startapp hrs
修改应用文件夹下的view.py文件
#字如其名,此文件用来设置展示给用户的界面代码(html)
from django.http import HttpResponse
def index(request):
return HttpResponse('<h1>Hello, Django!</h1>')
此时应用目录还没有与此对应的urls.py文件,创建一个这样的文件,相当于告诉系统当打开此应用时那么就运行views.py文件展示:
(venv)$ touch hrs/urls.py
(venv)$ vim hrs/urls.py
from django.urls import path
from hrs import views
urlpatterns = [
path('', views.index, name='index'),
]
此时还要修改项目文件夹下面的urls.py 文件对应用的url进行明确
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('hrs/', include('hrs.urls')),
]
至此运行项目并访问本机端口http://localhost:8000/hrs,页面会对你说hello django!
下面使用视图模板来更换views.py提高项目工作效率:
首先创建一个用来存放模板页的文件夹在项目文件夹所在的目录中:
(venv)$ mkdir templates
(venv)$ touch templates/index.html
(venv)$ vim templates/index.html
并写入
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>部门信息</h1>
<hr>
<table>
<tr>
<th>部门编号</th>
<th>部门名称</th>
<th>所在地</th>
</tr>
{% for dept in depts_list %}
<tr>
<td>{{ dept.no }}</td>
<td>{{ dept.name }}</td>
<td>{{ dept.location }}</td>
<tr>
{% endfor %}
</table>
</body>
</html>
并修改应用文件夹下的views.py文件:
#使之能够调用此模板页并对模板页进行信息填充
from django.shortcuts import render
depts_list = [
{'no': 10, 'name': '财务部', 'location': '北京'},
{'no': 20, 'name': '研发部', 'location': '成都'},
{'no': 30, 'name': '销售部', 'location': '上海'},
]
def index(request):
return render(request, 'index.html', {'depts_list': depts_list})
并修改项目文件夹下面的settings.py使得render函数能够对接模板页
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(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',
],
},
},
]
至此运行项目可见效果
需求得django功能肯定不止这些,接下来就将应用添加到已安装得项目中,并为自己的项目配置mysql数据库,修改项目文件夹得settings.py文件:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'hrs',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'oa',
'HOST': '1.2.3.4',
'PORT': 3306,
'USER': 'yourname',
'PASSWORD': 'yourpass',
}
}
(对python3)同时修改项目文件夹的__init__.py文件将pymysql当作mysqldb,避免找不到MySQL的客户端工具:
import pymysql
pymysql.install_as_MySQLdb()
既然我们为项目配置了数据库,那么理所当然给项目在mysql中创建数据库,(名字与settings.py文件中对应)
初次为项目创建数据库,需要执行模型迁移工作,根据模型生成数据需要的额二维表,(每次为项目增添或删改模型都需要迁移操作),
(venv)$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying sessions.0001_initial... OK
下面为应用创建数据模型:
修改对应应用的模型文件:
(venv)$ vim hrs/models.py
from django.db import models
class Dept(models.Model):
"""部门类"""
no = models.IntegerField(primary_key=True, db_column='dno', verbose_name='部门编号')
name = models.CharField(max_length=20, db_column='dname', verbose_name='部门名称')
location = models.CharField(max_length=10, db_column='dloc', verbose_name='部门所在地')
class Meta:
db_table = 'tb_dept'
class Emp(models.Model):
"""员工类"""
no = models.IntegerField(primary_key=True, db_column='eno', verbose_name='员工编号')
name = models.CharField(max_length=20, db_column='ename', verbose_name='员工姓名')
job = models.CharField(max_length=10, verbose_name='职位')
# 多对一外键关联(自参照)
mgr = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='主管')
sal = models.DecimalField(max_digits=7, decimal_places=2, verbose_name='月薪')
comm = models.DecimalField(max_digits=7, decimal_places=2, null=True, blank=True, verbose_name='补贴')
# 多对一外键关联(参照部门模型)
dept = models.ForeignKey(Dept, db_column='dno', on_delete=models.PROTECT, verbose_name='所在部门')
class Meta:
db_table = 'tb_emp'
并再次执行迁移操作,通过模型生成迁移文件,并再次执行生成二维表:
#可以看出来在项目的构建中每次修改或删除模型都需要这两步,1、通过模型生成迁移文件,2、执行生成二维表
(venv)$ python manage.py makemigrations hrs
Migrations for 'hrs':
hrs/migrations/0001_initial.py
- Create model Dept
- Create model Emp
(venv)$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, hrs, sessions
Running migrations:
Applying hrs.0001_initial... OK
至此还需要在应用的admin.py文件中,对新添的模型进行注册:
from django.contrib import admin
from hrs.models import Emp, Dept
admin.site.register(Dept)
admin.site.register(Emp)
这样来,在后台中创建django的超级用户并登录即可看到自己的模型,且用户每次在网站中修改数据,都会同步更新到数据库中,(其实这时候就相当于将电脑当作了服务器来运行这个django项目网站)
创建超级用户:
(venv)$ python manage.py createsuperuser
Username (leave blank to use 'hao'): jackfrued
Email address: jackfrued@126.com
Password:
Password (again):
Superuser created successfully.
并登入可以看到相应的后台管理的功能
至此只完成了后台的管理,且后台管理并没有同步到前端显示,http://127.0.0.1:8000/hrs
还可以使用django内置提供的shell进行后台管理:
python manage.py shell
本文地址:https://blog.csdn.net/qq_45841239/article/details/107167435