• 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 %}

      

  • 相关阅读:
    决策树
    性能测试–性能监视器
    MEAN栈开发
    Android Studio 入门(转)
    提取重复代码不应该只从代码角度,可以从业务角度看看(转)
    我眼中的领域驱动设计(转)
    网格最短路径算法(Dijkstra & Fast Marching)(转)
    Android GridView显示SD卡的图片
    Android GridView异步加载图片和加载大量图片时出现Out Of Memory问题
    Android 弹出框Dialog并缩放图片
  • 原文地址:https://www.cnblogs.com/quguanwen/p/11359065.html
Copyright © 2020-2023  润新知