电商平台网站大全重庆seo网站收录优化
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')
