当前位置: 首页 > news >正文

python web 框架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 yournameadmin.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 %}
  • 继承与共享
    在这里插入图片描述

共享使用方法:
{% include 'header.html' %}
继承使用方法:
{% extends 'base.html' %}

  • 过滤器
    在网页中显示摘要,或者指定日期格式等,可以使用过滤器

  • html 代码的表格绘制

{% for c in cars %}{% if forloop.first %}   // 第一次循环
<table><tr><td>车厂</td><td>车款</td></tr>{% endif %}<tr bgcolor = "{% cycle '#eeeeee' '#cccccc'%}"  // 循环颜色<td>{{ maker_name }}</td><td>{{ c }} </td></tr>{% if forloop.last %}     // 最后一次循环
</table>{% endif %}
{% empty %}  // 如果cars为空<h3> 车厂 <em>{{ maker_name }}</em>目前无库存</h3>
{% endfor %}

模型相关

  • models 中选项
SIZES = ('Small','Medium','Large')size = models.CharField(max_length =1, choices = SIZES)
  • 数据表以名字显示
def __str__(self):   # python3return self.PackageNum
def __unicode__(self):    # python2return self.PackageNum

注意python3和python2的不同。

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

def Meta:    # python3verbose_name = "什么什么表"ordering = ['name']  # 按 name 字段排序
  • 外键
    maker = models.ForeignKey(Marker,on_delete = models.CASCADE)
    指当被引用对象被删除时,此引用对象也要一并删除。

  • admin 后台显示中文
    在定义模型class时,加上verbose_name='中文'

  • model中允许一个字段不是必填项
    blank = True
    注意其与null = True的区别,null为接收空字符

  • 更新某项数据最好使用update而不是save方法
    在这里插入图片描述

视图相关

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

  • 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 News</h1>
{% else %}<h1>No News Here</h1>
{% 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 datetimedef 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')
http://www.lryc.cn/news/297646.html

相关文章:

  • ubuntn20 搭建 redmine
  • 每日五道java面试题之java基础篇(三)
  • 如何升级 gpt4?快速升级至ChatGPT Plus指南,爆火的“ChatGPT”到底是什么?
  • 【实习】深信服防火墙网络安全生产实习
  • 怎么把视频音乐提取成mp3?分享详细工具和方法!
  • 代码随想录算法训练营第44天 | 完全背包理论基础 518.零钱兑换II 377.组合总和 Ⅳ
  • 深度解析与推荐:主流Web前端开发框架
  • 【React】如何使antd禁用状态的表单输入组件响应点击事件?
  • Apache Flink
  • SpringMVC速成(一)
  • 通过nginx学习linux进程名的修改
  • 【PyTorch】实现迁移学习框架DANN
  • thinkphp6入门(18)-- 中间件中除了handle函数,还可以有其它函数吗
  • Java stream 流的基本使用
  • C++面向对象 Part 2
  • 海外云手机的核心优势
  • CDN相关和HTTP代理
  • STM32的ADC电压采集
  • 基于麻雀优化算法优化XGBoost参数的优化控制策略
  • Python爬虫——请求库安装
  • 瑞芯微推理RKNN使用
  • 动漫风博客介绍页面源码
  • 网络的基本概念和socket编程
  • 探索C语言的内存魔法:动态内存管理解析
  • 2023年全国职业院校技能大赛软件测试赛题第3套
  • 【数据分享】1929-2023年全球站点的逐日降水量数据(Shp\Excel\免费获取)
  • SpringBoot WebSocket客户端与服务端一对一收发信息
  • MinGW/MSYS/GCC/GNU/MSVC/Clang/LLVM都是什么
  • 9.0 Zookeeper 节点特性
  • VUEX项目场景