s14_01_django基础 admin
Django基础
- Web框架
- Web框架本质、自定义Web框架
https://www.cnblogs.com/wupeiqi/articles/5237672.html
- MVC和MTV
MVC
Model View Controller
数据库 模板文件 业务处理
MTV
Model Template View
数据库 模板文件 业务处理
- 基本配置
# 安装:pip3 install django
# 创建Django工程
django-admin startproject 【工程名称】
mysite
- mysite # 对整个程序进行配置
- init
- settings # 配置文件
- url # URL对应关系
- wsgi # 遵循WSIG规范,上线后:uwsgi + nginx
- manage.py # 管理Django程序:
- python manage.py
- python manage.py startapp xx
- python manage.py makemigrations
- python manage.py migrate
- app01
- views.py
- admin.py
- models.py # 创建数据库表
# 运行Django功能
python manage.py runserver 127.0.0.1:8001
# 创建app
cd mysite
python manage.py startapp cmdb
python manage.py startapp openstack
python manage.py startapp xxoo....
# app:
migrations 数据修改表结构
__init__.py python2必须文件,python3不需要
admin Django为我们提供的后台管理
apps 配置当前app
models ORM,写指定的类,通过命令可以创建数据库结构
tests 单元测试
views 业务代码
# 其他常用命令:
python manage.py runserver 0.0.0.0
python manage.py startapp appname
python manage.py syncdb
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
# 配置模板的路径
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',
],
},
},
]
# 配置静态目录
static
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
<link rel="stylesheet" href="/static/commons.css" />
# 数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'dbname',
'USER': 'root',
'PASSWORD': 'xxx',
'HOST': '',
'PORT': '',
}
}
# Django连接MySQL时使用MySQLdb模块,而python3中无此模块,所以需要使用pymysql来代替
# 如下设置放置的与project同名的配置的 __init__.py文件中
import pymysql
pymysql.install_as_MySQLdb()
# 使用model.py时配置 project.settings.py
INSTALLED_APPS
app01,
# 注释csrf(暂时注释)
# Django请求生命周期
- admin
# django amdin是django提供的一个后台管理页面,提供完善的html和css,
# 在通过Model创建完数据库表之后,就可以对数据进行增删改查,
# 使用django admin 则需要以下步骤:
- 创建后台管理员
- 配置url
- 注册和配置django admin后台管理页面
1、创建后台管理员
python manage.py createsuperuser
2、配置后台管理url
url(r'^admin/', include(admin.site.urls))
3、注册和配置django admin 后台管理页面
a、在admin中执行如下配置
from django.contrib import admin
from app01 import models
admin.site.register(models.UserType)
admin.site.register(models.UserInfo)
admin.site.register(models.UserGroup)
admin.site.register(models.Asset)
b、设置数据表名称
class UserType(models.Model):
name = models.CharField(max_length=50)
class Meta:
verbose_name = '用户类型'
verbose_name_plural = '用户类型'
c、打开表之后,设定默认显示,需要在model中作如下配置
class UserType(models.Model):
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name
from django.contrib import admin
from app01 import models
class UserInfoAdmin(admin.ModelAdmin):
list_display = ('username', 'password', 'email')
admin.site.register(models.UserType)
admin.site.register(models.UserInfo,UserInfoAdmin)
admin.site.register(models.UserGroup)
admin.site.register(models.Asset)
d、为数据表添加搜索功能
from django.contrib import admin
from app01 import models
class UserInfoAdmin(admin.ModelAdmin):
list_display = ('username', 'password', 'email')
search_fields = ('username', 'email')
admin.site.register(models.UserType)
admin.site.register(models.UserInfo,UserInfoAdmin)
admin.site.register(models.UserGroup)
admin.site.register(models.Asset)
e、添加快速过滤
from django.contrib import admin
from app01 import models
class UserInfoAdmin(admin.ModelAdmin):
list_display = ('username', 'password', 'email')
search_fields = ('username', 'email')
list_filter = ('username', 'email')
admin.site.register(models.UserType)
admin.site.register(models.UserInfo,UserInfoAdmin)
admin.site.register(models.UserGroup)
admin.site.register(models.Asset)
更多:http://docs.30c.org/djangobook2/chapter06/
- 常用记录:
# 用户名与密码
<link rel="stylesheet" href="/static/commons.css">
<style>label{width: 80px;text-align: right;display: inline-block;}</style>
<form action="/login/" method="POST">
//urls.py中的r'^login/' / 与此处保持一致#}
<p>
<label for="username">用户名:</label>
<input id='username'name="user" type="text">
</p>
<p>
<label for="password">密码;</label>
<input id='password'name="pwd" type="password" >
<input type="submit"value="提交">
<span style="color: red">{{ error_msg }}</span>
</p>
# 添加框、查看详情、删除
<div>
<form action="/home" method="POST">
<input type="text"name="username"placeholder="用户名">
<input type="text"name="email"placeholder="邮箱">
<input type="text"name="gender"placeholder="性别">
<input type="submit"value="添加">
</form>
</div>
<div>
<table>
{% for row in user_list %}
<tr>
<td>{{ row.username }}</td>
<td>{{ row.email }}</td>
<td>{{ row.gender }}</td>
<td><a href="/detail?nid={{ row.id }}">查看详细</a>|
<a class='del'href="#" row_id="{{ row.id }}">删除</a>
</td>
</tr>
{% endfor %}
</table>
</div>
<div>
<form action="/del_host"method="POST">
<input style="display: none"id="nid" type="text" name="nid">
<p><input type="submit"></p>
<p><input type="button"></p>
</form>
</div>
<script src="/static/jquery-1.12.4.js"></script>
<script>
$('.del').click(function () {
var row_id = $(this).attr('row_id');
$('#nid').val(row_id)
})
</script>