python web 框架Django学习笔记

news/2025/2/19 10:24:17

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 中

python">from django.contrib import admin
from .models import yourname

admin.site.register(yourname)

自定义后台显示

python">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 中选项
python">SIZES = ('Small','Medium','Large')

size = models.CharField(max_length =1, choices = SIZES)
  • 数据表以名字显示
python3">def __str__(self):   # python3
    return self.PackageNum
python2">def __unicode__(self):    # python2
    return self.PackageNum

注意python3和python2的不同。

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

python2">def Meta:    # python3
    verbose_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函数中

python">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函数的一个捷径
    常规方法:
python">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() 函数

python">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})
  • 数据更新
    不好的代码:
python">p = Publisher.objects.get(name='Apress')
p.name = 'Apress Publishing'
p.save()

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

python">Publisher.objects.filter(id=52).update(name='Apress Publishing')
文章来源:https://blog.csdn.net/kaspar1992/article/details/136091232
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.niftyadmin.cn/n/5372924.html

相关文章

HiveQL——不借助任何外表,产生连续数值

注&#xff1a;参考文章&#xff1a; HiveSql一天一个小技巧&#xff1a;如何不借助其他任何外表&#xff0c;产生连续数值_hive生成连续数字-CSDN博客文章浏览阅读1.3k次。0 需求描述输出结果如下所示&#xff1a;12345...1001 问题分析方法一&#xff1a;起始值&#xff08;…

webgis后端安卓系统部署攻略

目录 前言 一、将后端项目编译ARM64 二、安卓手机安装termux 1.更换为国内源 2.安装ssh远程访问 3.安装文件远程访问 三、安装postgis数据库 1.安装数据库 2.数据库配置 3.数据导入 四、后端项目部署 五、自启动设置 总结 前言 因为之前一直做的H5APP开发&#xf…

一周学会Django5 Python Web开发-Django5创建项目(用PyCharm工具)

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

CVE-2021-42013 漏洞复现

CVE-2021-42013 漏洞版本&#xff1a;Apache 2.4.50 Apache版本2.4.50是对CVE-2021-&#xff08;版本2.4.49&#xff09;的修复&#xff0c;但是修复不完整导致可以绕过&#xff0c;从而产生了CVE-2021-42013&#xff08;版本2.4.50&#xff09;。 这时修复了对.%2e的检测。…

蓝桥杯官网练习题(Excel地址)

题目描述 Excel 单元格的地址表示很有趣&#xff0c;它使用字母来表示列号。 比如&#xff0c; A 表示第 1 列&#xff0c; B 表示第 2 列&#xff0c; Z 表示第 26 列&#xff0c; AA 表示第 27 列&#xff0c; AB 表示第 28 列&#xff0c; BA 表示第 53 列&#xff…

Rust基础拾遗--进阶

Rust基础拾遗 前言1.结构体2.枚举与模式3.运算符重载4.迭代器5.集合 前言 通过Rust程序设计-第二版笔记的形式对Rust相关重点知识进行汇总&#xff0c;读者通读此系列文章就可以轻松的把该语言基础捡起来。 1.结构体 2.枚举与模式 3.运算符重载 4.迭代器 5.集合

C++笔记之regex(正则表达式)

C++笔记之regex(正则表达式) ——2024-02-10 ——《C++标准库》(第2版,侯捷译) Page 717 code review! 文章目录 C++笔记之regex(正则表达式)例1:使用正则表达式进行搜索(`std::regex_search`)例2:使用正则表达式进行全文匹配(`std::regex_match`)例3:使用正则表达式…

算法学习——LeetCode力扣字符串篇

算法学习——LeetCode力扣字符串篇 344. 反转字符串 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; 描述 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地…