Python学习笔记-Django篇

安装(mac)

方法一:pip命令安装
$ pip3 install Django

指定版本:

$ pip3 install Django==3.0.8
方法二:下载源码安装

下载地址:https://www.djangoproject.com/download/

$ tar zxvf Django-3.0.8.tar.gz
$ cd Django-3.0.8
$ python3 setup.py install
方法三:从github获取
$ git clone https://github.com/django/django.git
创建项目:

网上:

$ django-admin.py startproject djangoTest

实际情况(mac):

python3 /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/bin/django-admin.py startproject djangoTest
启动服务:
$ cd djangoTest
$ python3 manage.py runserver
或
$ python3 manage.py runserver 127.0.0.1:8000
项目目录:
  • djangoTest: 项目的容器。
  • manage.py: 命令行工具,以各种方式与该项目进行交互。
  • djangoTest/__init__.py: 空文件,表示一个 Python 包。
  • djangoTest/asgi.py: ASGI 兼容的 Web 服务器的入口,以便运行项目。
  • djangoTest/settings.py: 项目的配置文件。
  • djangoTest/urls.py: 项目的 URL 声明,网站"目录"。
  • djangoTest/wsgi.py: WSGI 兼容的 Web 服务器的入口,以便运行项目。

路由配置

配置文件:urls.py

# urls.py
from django.conf.urls import url
from . import home as v_home # 视图

url(r'^$', v_home.home)
path、re_path、include方法
  • path函数语法:path(route, view, kwargs=None, name=None)
  • 正则表达式的规则一般用re_path方法实现
  • include方法用于导入其他模块的路由配置
# urls.py
from django.urls import include, re_path
from . import home as v_home
from . import admin as v_admin

urlpatterns = [
    re_path(r'^$', v_home.home),
    re_path('admin/', v_admin.index, name='Tony'),
    re_path(r'^user/', include('djangoStudy.urls_user'))
]
# urls_user.py
from django.urls import re_path
from . import user as v_user

urlpatterns = [
    re_path(r'user/$', v_user.index, name='Tom')
]

模板

配置路径:
  1. 在项目根目录下创建 templates 目录
  2. 在setting.py文件,修改 TEMPLATES 中的 DIRS 为 [BASE_DIR+"/templates"]
# setting.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR + '/templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
渲染模板:
# home.py
from django.shortcuts import render
def home(request):
    context = {} # 上下文字典
    return render(request, 'home.html', context)
# urls.py
from django.urls import include, re_path
from . import home as v_home

urlpatterns = [
    re_path(r'^$', v_home.home),
]
模板语法:

home.py文件:

# home.py
from django.shortcuts import render
import datetime


def home(request):
    context = {
        'word': 'Hello home!',
        'list': ['aa', 'bb', 'cc', 'dd'],
        'dict': {
            'a': 11,
            'b': 22
        },
        'size': 3421,
        'time': datetime.datetime.now(),
        'link': '<a href=\'https://www.baidu.com/\' target=\'_blank\'>跳转</a>'
    }
    return render(request, 'home.html', context)

templates/home.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>home</title>
</head>
<body>
<p>[word]: {{word}}</p>
<p>[list]: {{list}}</p>
<p>[list.0|first|upper]: {{list.0|first|upper}}</p>
<p>[dict.b]: {{dict.b}}</p>
<p>[word|lower]: {{word|lower}}</p>
<p>[word|truncatewords:"1"]: {{word|truncatewords:"1"}}</p>
<p>[word|truncatechars:8]: {{word|truncatechars:8}}</p>
<p>[word|length]: {{word|length}}</p>
<p>[size|filesizeformat]: {{size|filesizeformat}}</p>
<p>[time|date]:"Y-m-d": {{time|date:"Y-m-d"}}</p>
<p>[link|safe]: {{link|safe}}</p>

<p>[if判断]:</p>
{% if size > 1000 %}
<p>size > 1000</p>
{% endif %}

<p>[for循环]:</p>
<ul>
    {% for l in list %}
    <li>{{ l }}</li>
    {% endfor %}
</ul>

<p>[for字典循环]:</p>
<ul>
    {% for k,v in dict.items %}
    <li>({{ forloop.counter }}|{{ forloop.counter0}}|{{ forloop.revcounter }}|{{ forloop.revcounter0}}|{{ forloop.first}}|{{ forloop.last}}) {{ k }} : {{ v }}</li>
    {% endfor %}
</ul>
</body>
</html>

页面效果:


image.png
自定义语法:

静态路径配置

  1. 在项目根目录下创建 statics 目录
  2. 在 settings.py添加以下配置:
STATIC_URL = '/static/' # 路径别名
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "statics"),
]
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,056评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,842评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,938评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,296评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,292评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,413评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,824评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,493评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,686评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,502评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,553评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,281评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,820评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,873评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,109评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,699评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,257评论 2 341