1.django核心功能
因为django功能很多 ,出版社可以使用到部分功能,最快最简单了解django的运行模式,每个点后续细化去梳理
django的路由
django的视图
django的模板
django的ORM
django的cookie与session
django的中间件
django的ajax
django的form组件
django的auth
2.django的全局配置文件setting.py
BASE_DIR #项目文件夹 ,系统中绝对路径
DRBUG #调试开启,上线关闭
ALLOWED_HOST #允许访问的网段
INSTALLED_APPS #注册app ,到项目中
MIDDLEWARE #中间件
ROOT_URLCONF #根路由文件所在
TEMPLATES #存放html的模板的路径
DATABASES #数据库目录
STSTIC_URL #每个app下具体存放静态文件的目录
STATICFILES_DIRS #项目通用静态资源存放路径
LANGUAGE_CODE #语言
TIME_ZONE #时区
3.登录页
1) 设计url跳转views函数
2) views函数设计业务逻辑 ,根据请求返回模板页面
3) 模板页面可以接受views函数的数据
####urls.py
url(r'^app01/', include('app01.urls',namespace='app01'))
####views.py
def login(request):
err_msg = ''
if request.method == 'POST':
user = request.POST.get('username')
passwd = request.POST.get('password')
print(user, passwd)
if user == 'qgw' and passwd == '123':
return render(request, 'cbs.html')
err_msg = '账号密码错误'
return render(request, 'login.html', {'err_msg': err_msg})
####login.html cbs.html
从jquery的第三方库中直接扒取
4.出版社
1)设计表orm对象关系管理模型
2)设计url包括查询,新增,删除,修改操作
3)视图函数针对url的访问执行
4)模板设计使用公共模板,通过数据修改模板内容
####models.py#### 仅展示名字
class presslist(models.Model):
name = models.CharField(max_length=32)
####url.py#### 提供增删改查四个url与对应的函数
url(r'^press/list', views.presslist),
url(r'^press/del', views.pressdel),
url(r'^press/add', views.pressadd),
url(r'^press/edit/', views.pressedit),
####views.py#### 完成业务的函数
from django.shortcuts import render, redirect
from app1 import models
# Create your views here.
def login(request):
err_msg = ''
if request.method == 'POST':
user = request.POST.get('username')
passwd = request.POST.get('password')
if models.login.objects.filter(password=passwd, name=user):
return render(request, 'cbs.html')
err_msg = '账号密码错误'
return render(request, 'login.html', {'err_msg': err_msg})
def presslist(request):
msg_all = models.presslist.objects.all()
return render(request, 'cbs.html', {'msg': msg_all})
def pressadd(request):
if request.method == 'POST':
press_name = request.POST.get('pressname')
models.presslist.objects.create(name=press_name)
return redirect('/press/list')
return render(request, 'cbsadd-edit.html')
def pressdel(request):
del_id = request.GET.get('id')
print(del_id)
models.presslist.objects.get(pk=del_id).delete()
return redirect('/press/list')
def pressedit(request):
edit_id = request.GET.get('id')
obj = models.presslist.objects.get(pk=edit_id)
msg = ''
if request.method == 'POST':
obj.name = request.POST.get('pressname')
if models.presslist.objects.filter(name=obj.name):
msg = '已存在'
if not obj.name:
msg = '不能为空'
if not models.presslist.objects.filter(name=obj.name) and obj.name:
obj.save()
return redirect('/press/list')
return render(request, 'cbsadd-edit.html', {'obj': obj, 'msg': msg})
####tempalte目录#### 完成所需的动态页面
base.html 基础母版 ,在bootstrap中的样式中直接下载使用
####tempalte/cbs.html
{% extends 'base.html' %}
{% block body1 %}
<table class="text-center table table-striped table-bordered">
<tr>
<td>ID</td>
<td>出版社名字</td>
<td>操作</td>
</tr>
{% for obj in msg %}
<tr>
<td>{{ obj.pk }}</td>
<td>{{ obj.name }}</td>
<td><a href="/press/edit/?id={{ obj.pk }}"><i class="fa fa-pencil-square-o" aria-hidden="true">   </i></a><a href="/press/del/?id={{ obj.pk }}"><i class="fa fa-remove" aria-hidden="true"></i></a></td>
</tr>
{% endfor %}
</table>
{% endblock %}
####tempalte/cbsadd-edit
{% extends 'base.html' %}
{% block body1 %}
<form action="" method="post">
<div style="margin-left: 100px;margin-top: 50px;" class="col-md-6 ">
<input type="text" class="form-control" name="pressname" placeholder="{{ obj.name }}">{{ msg }}
</div>
<div style="margin-left: 10px;margin-top: 50px;" class="col-md-2 ">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</form>
{% endblock %}