2018-12-18

web框架

web框架: 别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子。
一般web框架的架构是这样的:

web框架

其它基于python的web框架,如tornado、flask、webpy都是在这个范围内进行增删裁剪的。例如tornado用的是自己的异步非阻塞“wsgi”,flask则只提供了最精简和基本的框架。Django则是直接使用了WSGI,并实现了大部分功能。

Django模板标签

1. if/else 标签

# 基本语法格式:
{% if condition %}
     ... display
{% endif %}

# 或者:
{% if condition1 %}
   ... display 1
{% elif condition2 %}
   ... display 2
{% else %}
   ... display 3
{% endif %}

# {% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ),例如:
{% if athlete_list and coach_list %}
     athletes 和 coaches 变量都是可用的。
{% endif %}

2. for 标签

# 循环语法是 for X in Y ,Y是要迭代的序列,而X是在每一个特定的循环中使用的变量名称
<ul>
{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% endfor %}
</ul>

# 给标签增加一个 reversed 使得该列表被反向迭代:
{% for athlete in athlete_list reversed %}
...
{% endfor %}

# 可以嵌套使用 {% for %} 标签:
{% for athlete in athlete_list %}
    <h1>{{ athlete.name }}</h1>
    <ul>
    {% for sport in athlete.sports_played %}
        <li>{{ sport }}</li>
    {% endfor %}
    </ul>
{% endfor %}

3. ifequal/ifnotequal 标签

# {% ifequal %} 标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值
{% ifequal user currentuser %}
    <h1>Welcome!</h1>
{% endifequal %}

# 和 {% if %} 类似, {% ifequal %} 支持可选的 {% else%} 标签
{% ifequal section 'sitenews' %}
    <h1>Site News</h1>
{% else %}
    <h1>No News Here</h1>
{% endifequal %}

4. 注释标签

# Django 注释使用 {# #}
{# 这是一个注释 #}

5. include 标签

# {% include %} 标签允许在模板中包含其它的模板的内容
{% include "nav.html" %}

6. extends 标签

## 继承了base.html文件
{% extends "base.html" %}

7. 过滤器

# 模板过滤器可以在变量被显示前修改它,过滤器使用管道字符
## 如下,{{ name }} 变量被过滤器 lower 处理后,文档大写转换文本为小写
{{ name|lower }}

# 过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入
## 如下,将第一个元素并将其转化为大写
{{ my_list|first|upper }}

# 有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含
## 如下,将显示变量 bio 的前30个词
{{ bio|truncatewords:"30" }}

# 其他过滤器:
## length : 返回变量的长度
## addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面
## date : 按指定的格式字符串参数格式化 date 或者 datetime 对象,例如
{{ pub_date|date:"F j, Y" }}

Django基本命令

  1. 创建工程下project
    django-admin startproject project_name
  2. 在工程下创建应用app
    python manage.py startapp app_name
  3. 启动django项目
    python manage.py runserver

    python manage.py runserver 8000

    python manage.py runserver 0.0.0.0:8000

通过指定一个 IP 地址,你可以告诉服务器–允许非本地连接访问。 如果你想和其他开发人员共享同一开发站点的话,该功能特别有用。 0.0.0.0 这个 IP 地址,告诉服务器去侦听任意的网络接口

  1. 同步更新数据库
    python manage.py makemigrations
    python manage.py migrate
  2. 清空数据库的表数据,只留表结构
    python manage.py flush
  3. 创建超级管理员
    python manage.py createsuperuser
  4. 修改用户密码
    python manage.py changepassword username
  5. 导出导入数据
    python manage.py dumpdata appname > appname.json
    python manage.py loaddata appname.json
  6. 项目环境终端
    python manage.py shell
  7. 数据库命令行
    python manage.py dbshell
  8. 更多命令
    python manage.py

model基本使用

views.py

from django.shortcuts import render,HttpResponse
from karlapp import models

def login(request):
    if request.method == 'GET':
        a = [1,]
        obj_li = models.UserInfo.objects.all()
        # obj_li = models.UserInfo.objects.filter(username='test')

        for obj in obj_li:
            print('username ---> ', obj.username)
            print('password ---> ', obj.password)

    return render(request, 'login.html', locals())
    # return render(request, 'login.html', {'data2':data, 'msg2':msg})
    # return HttpResponse('Welcome to my world')

urls.py

from django.conf.urls import url
from django.contrib import admin
from karlapp import views

urlpatterns = [
    url(r'^login/$', views.login),
    url(r'^admin/', admin.site.urls),
]

models.py

from django.db import models

class UserInfo(models.Model):
    username = models.CharField(max_length=32, null=True)
    password = models.CharField(max_length=32, null=True)

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>karlapp</title>
</head>
<body>
    <h1>{{ a.0 }}</h1>

    {% for item in obj_li %}
        <div>
            <span>{{ item.username }}</span>
            <span>{{ item.password }}</span>
        </div>
    {% endfor %}

</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 切换到创建项目的目录 cd C:\Users\admin\Desktop\DjangoProject创建名为pr...
    在努力中阅读 3,265评论 2 3
  • (一)、启动服务器 (二)、创建数据库表 或 更改数据库表或字段 Django 1.7.1及以上 用以下命令 1....
    夏天夏星阅读 5,646评论 0 17
  • 此段内容简要来自自强学堂的教程详情请查询自强学堂 一、 后台的运作流程 接收request请求 处理数据 获取请求...
    coder_ben阅读 5,246评论 6 56
  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 2,066评论 0 8
  • 笔记来源:自强学堂-Django教程这个教程真的非常好用!强烈推荐 Django简介-组成部分 urls.py:网...
    LeeLom阅读 1,511评论 0 2