django2-登录与出版社

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">&nbsp&nbsp&nbsp</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 %}

  

原文地址:https://www.cnblogs.com/quguanwen/p/11359065.html