Django 学习笔记

2018年5月
python web 框架Django学习笔记
Django 架站的16堂课

MVC架构设计师大部分框架或大型程序项目中一种软件工程的架构模式,把程序或者项目分为三个主要组成部分,Model数据模型、View视图、Controller控制器。

命令及设置相关

  • 创建数据库及中间文件,每次数据表有改动都要执行下面的两句
    python manage.py makemigrations name
    同步更新数据库内容
    python manage.py migrate

  • 生成项目及app
    python django-admin startproject name
    python manage.py startapp name

  • 运行项目
    pyhton manege.py runserver [IP及port]
    默认为 127.0.0.1:8000

  • 启动admin管理界面
    python manage.py createsuperuser
    输入username password
    然后在 admin.py 中

    from django.contrib import admin
    from .models import yourname
    
    admin.site.register(yourname)

    自定义后台显示

    class PostAdmin(admin.ModelAdmin):
     list_display=('aa','bb','cc') #要和数据库中字段一致
     ordering = ('-pub_time')
    admin.site.register(yourname,PostAdmin)
  • 加入static文件的方法

    Django 架站的16堂课 70页

    setting.py 中

    STATIC_URL = '/static/'
    STATICFILES_DIRS =[BASE_DIR+"/static"]

    在html中引用方法

    {% load staticfiles %}   // 只需使用一次即可
    <img src ="{%  statci 'img/logo.png' %}">

模板相关

  • template语言
    • {% if 条件 %} … {% endif %}
    • {% if 条件 %} … {% elif 条件 %} … {% endif %}
    • {% if 条件 %} … {% elif 条件 %} … {% else %} … {% endif %}
  • 继承与共享
    Django 学习笔记_第1张图片
    共享使用方法:
    {% include 'header.html' %}
    继承使用方法:
    {% extends 'base.html' %}
  • 过滤器
    在网页中显示摘要,或者指定日期格式等,可以使用过滤器
    Django 学习笔记_第2张图片
    Django 学习笔记_第3张图片
    • html 代码的表格绘制
      html
      {% for c in cars %}
      {% if forloop.first %} // 第一次循环


      {% endif %}


      {% if forloop.last %} // 最后一次循环
      车厂车款
      {{ maker_name }}{{ c }}

      {% endif %}
      {% empty %} // 如果cars为空

      车厂 {{ maker_name }}目前无库存


      {% endfor %}

模型相关

  • models 中选项

    SIZES = ('Small','Medium','Large')
    
    size = models.CharField(max_length =1, choices = SIZES)
  • 数据表以名字显示

    def __str__(self):   # python3
     return self.PackageNum
    def __unicode__(self):    # python2
     return self.PackageNum

    注意python3和python2的不同。

    在后台显示数据表的名字:

    def Meta:    # python3
     verbose_name = "什么什么表"
  • 常用的字段及各字段常用属性说明
    Django 学习笔记_第4张图片
    Django 学习笔记_第5张图片
  • 外键
    maker = models.ForeignKey(Marker,on_delete = models.CASCADE)
    指当被引用对象被删除时,此引用对象也要一并删除。
  • admin 后台显示中文
    在定义模型class时,加上verbose_name='中文'

视图相关

  • view 中对数据库的查询相关操作
    Django的view函数中,主要是找到数据项,把它放在某一变量中,对对其进行相关操作,all()/save()等
    Django 学习笔记_第6张图片

  • url传递参数
    在url中,定义规则为 url(r'^list/([0-9a-zA-Z]+)/$',disp_details)
    会将括号中的参数取出来传递到后面disp_details函数中

    def disp_detail(request,sku)
     ...

Django 开发宝典
王友钊等编著
书中笔记摘抄
2018年6月

  • HttpResponse('[http_user_agent]:%s,[remote_addr]:%s') %s (http_user_agent,remote_addr)
    在view中,返回数据的一种形式,%s为占位符。(120页)

  • {% ifequal %}标签比较两个值,可以是变量、字符串、整数和小数。

    {% ifequal section 'sitenews' %}
     <h1>Site Newsh1>
    {% else %}
     <h1>No News Hereh1>
    {% endifequal %}
  • 注释
    {# This is a connent #}
    多行注释

    {% comment %}
    This is
    a multi-line
    comment
    {% endcomment %}
  • views函数的一个捷径
    常规方法:

    def current_datetime(request):
     now = datetime.datetime.now()
     t = get_template('current_datetime.html')
     html = t.render({'current_date':now})
     return HttpResponse(html)

    便捷方法:
    在 django.shortcuts 模块中的 render_to_response() 函数

    from django.shortcuts import render_to_response
    import datetime
    
    def current_datetime(request):
     now = datetime.datetime.now()
     return render_to_response('current_datetime.html',{'current_date':now})
  • 数据更新
    不好的代码:

    p = Publisher.objects.get(name='Apress')
    p.name = 'Apress Publishing'
    p.save()

    这样更新了name,所有列都进行了更新,不明智。使用update()方法

    Publisher.objects.filter(id=52).update(name='Apress Publishing')

你可能感兴趣的:(python,django)