Django教程--持续更新中···

一 了解Django

  • Django 是Python下最具有代表性的WEB框架;
  • 是一个开放源代码的web应用框架,使用Python编写;
  • 遵守BSD版权,初次发布于2005年7月,于2008年9月颁布正式版1.0;
  • 采用了MVC的软件设计模式,模型M-视图V-控制器C。

二 Django 安装

2.1 准备

安装前需要安装Python开发环境,并配置好Python环境变量(修改系统变量path,添加加Python的安装路径);

Django1.6.x以上版本已经兼容Python3.x;

2.2 安装

2.2.1 windows 环境

下载Django压缩包

解压后与Python安装目录放在同一个根目录,使用命令解压

tar xzvf Django-3.0.3.tar.gz

进入Django目录,执行命令

python setup.py install

Django将安装到Python的lib下的site-package;

···
Installed c:\python37\lib\site-packages\pytz-2019.3-py3.7.egg
Finished processing dependencies for Django==3.0.3

配置环境变量,添加以下路径到系统环境变量path中:C:\Python37\Lib\site-packages\Django-3.0.3-py3.7.egg\django;

C:\Python37\Scripts。

使用命令检查

>>> import django
>>> django.get_version()
‘3.0.3‘

2.2.2 Linux环境

2.2.2.1 yum安装方法

命令 安装setuptools:

yum install python-setuptools

使用easy-install 命令安装django

easy-install django

检查安装:(python解释器中使用命令)

>>> import django
>>> django.VERSION
(1,6,5,‘final‘,0)

2.2.2.2 pip安装方法

安装pip工具

参照 python pip安装使用

安装django

pip install Django

2.2.2.3 源码安装

下载源码包

安装

tar xzvf Django-X.Y.tar.gz    #解压下载包
cd Django-X.Y   #进入Django目录
python setup.py install    #执行安装命令

2.2.3 Mac环境

下载最新稳定版本

进入下载目录,默认是/User/XXX/Downloads, XXX是用户名

$ tar zxvf Django-3.0.3.tar.gz

或者github 上下载

git clone https://github.com/django.git

进入解压后的目录,安装

cd Django-3.0.3
sudo python setup.py.install

2.3 创建Django项目

先进入站点目录,使用命令创建demodj1项目

$ django-admin.py startproject demodj1

启动服务

cd demodj1
$ python manage.py runserver
···
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

三 创建第一个项目

  • Python3.7.4
  • Django 3.0.3

3.1 Django管理工具

django-admin

3.2 创建项目

django-admin startproject HelloWorld

项目目录结构

cd helloworld
tree
.
|-- HelloWorld              #项目的容器
|    |-- __init__.py        #一个空文件,告诉python该目录是要给python包
|    |-- asgi.py            #
|    |-- settings.py        #该项目的设置、配置
|    |-- urls.py            #该项目的url声明,一份有Djange驱动的网站目录
|    `-- wsgi.py            #一个WSGI兼容的web服务器的入口
`-- manage.py               #使用的命令行工具

添加view.py

from django.http import HttpResponse
def hello(request):
    return HttpResponse("Hello world ! ")

修改urls.py

from django.urls import path
from . import view
urlpatterns= [
    path(‘hello/‘, view.hello),
]

打开http://127.0.0.1:8000/hello,显示正常。

3.3 path()函数

path(route, view, kwargs=None, name=None)

  • route:必选参数,字符串,表示url的规则,匹配的url会执行对应的view
  • view:必选参数,执行与正则表示式匹配的url请求
  • kwargs:视图使用的字典类型的参数
  • name:用来反向获取url

四 Django 模板

模板是一个文本,用于分离文档的表现形式和内容

4.1 模板应用

在HelloWorld项目中创建templates目录并建立hello.html

hello.html文件:(使用双大括号)

<h1>{{hello}}</h1>

修改settings.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‘,
            ],
        },
    },
]

修改view.py

from django.shortcuts import render

def hello(request):
    context={}
    context[‘hello‘] = ‘Hello World!‘
    return render(request,‘hello.html‘,context)

4.2 模板标签

4.2.1 if/else

基本语法格式

{% if condition %}
       ···  display
{% endif %}
# 或者
{% if condition1 %}
       ···  display1
{% elif condition2 %}
       ···  display2
{% else %}
       ···  display3
{% endif %}
  • if/else支持嵌套
  • {% if %} 接受and \or \ not 关键字

4.2.2 for

{% for %} 允许在一个序列上迭代。

<ul>
{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% endfor %}
</ul>

给标签增加一个reversed 使得该列表被反向迭代

{% for athlete in athlete_list reversed %}
···
{% endfor %}

可以嵌套使用{% for %} 标签

4.2.3 ifequal/ifnotequal 标签

比较两个值,user currentuser

{% ifequeal user currentuser %}
    <h1>Welcome!</h1>
{% endifequal %}

支持 else 标签

{% ifequal section ‘sitenews‘ %}
    <h1>Site News</h1>
{% else %}
    <h1>No News Here</h1>
{% endifequal %}

4.2.4 注释标签

{# #}

4.2.5 过滤器

{{ name|lower }}

4.2.6 include

允许在模板中包含其他的模板的内容

{% include "nav.html" %}    

### 4.2.7 模板继承
模板可以用继承的方式来实现复用

原文地址:https://www.cnblogs.com/liying-yds/p/12656298.html

时间: 2024-08-01 12:25:00

Django教程--持续更新中···的相关文章

linux学习资料持续更新中

一.LINUX基础教程 1.老男孩系列免费视频: 1) linux高薪入门实战视频教程(第二部)老男孩linux教程 http://edu.51cto.com/course/course_id-1035-page-1.html 2) 跟着老男孩从0开始一步步实战深入学习linux运维(三) http://edu.51cto.com/lesson/id-11909.html linux学习资料持续更新中,布布扣,bubuko.com

痞子衡嵌入式:史上最强i.MX RT学习资源汇总(持续更新中...)

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MX RT学习资源. 类别 资源 简介 官方汇总 i.MXRT产品主页 恩智浦官方i.MXRT产品主页,最权威的资料都在这里,参考手册/数据手册,官方EVK板设计文件,各种应用笔记,各种参考设计方案.培训视频.软件SDK开发包,官方IDE/CFG工具,第三方软件支持等应有尽有,如果这上面文档你都能全部仔细看一遍,软件都能下载用起来,不用怀疑,你就是资深专家了. 其中痞子衡特别推荐你把所有应用笔记都看一遍,这些笔记凝结了所有恩智浦

Hello World!的各种编程语言程序(持续更新中……)

对于很多学习编程语言新手们,可能接触到的第一个程序就是"Hello World"的输出程序,笔者想在此篇简短的博文中介绍关于各种编程语言的"Hello World"输出程序. 至今,笔者仅仅接触过C++和Python两种编程语言,而且都仅仅是新手,所以此次只能写C++和Python两种语言的"Hello World"输出程序,但此篇博文会随着笔者学习的编程语言种类的增多而不断完善. 1. C++语言 #include<iostream>

阿里笔试题(2015)持续更新中

第一次做阿里笔试题,除了ACM题之外从来没有做过校招网络题呀,完全是裸考,总体感觉吧,对于我来说,感觉时间不够用,不是题不会,感觉时间紧,大脑很混乱,总结这一次的笔试题 废话不多说,直接上题和答案 平均每个人逗留时间为20分钟,那么开场前20分钟一共来了400人,且有20个人逗留时间已经到,但他们不一定出去,注意是平均时间,所有博物馆最少应该容纳500人 双向循环列表,从任何一个元素开始可以遍历全部元素 先和后面的元素相连 s->next=p->next; p->next->pre

Atom使用记录(持续更新中)

部分内容取自:http://www.jianshu.com/p/dd97cbb3c22d,我自己也在使用,持续更新中 Atom安装插件在窗口中File---Setting---install 在里面进行搜索就行. minimap: 为Atom加上一个代码预览地图,就想sublime中右侧的缩略图一样,效果如图. Emmet(和sublime一样的) simplified-chinese-menu:Atom的简体中文语言包,完整汉化,兼容所有已发布的版本Atom. autoclose-html:h

老男孩高端linux运维在线课程视频全套,持续更新中!

老男孩高端linux运维在线课程视频全套,持续更新中 http://edu.51cto.com/course/course_id-5651.html

资源向导之 JOS 计划 #持续更新中# MIT 6.828

JOS 计划 #持续更新中# 童鞋,上网要科学上网,做lab也要科学的做. 之前我一上来就做实验,很多资料都不知道.现在打算重新来过 方法: 0.xv6源码不要用MIT官网的那份,我的主机是Linux/Ubuntu 14.0各种编译error,我都改的想吐.后来直接用github上别人改好的,直接能跑起来没有编译错误的xv6. 1.按照MIT给出的课程安排表,每一次课的相关lecture必须全部过一遍. 2.要求的课堂作业必须完成,很多时候课程要求的任务是很轻松的,只要修改部分代码就行了.这里我

shell 常用文件、字符串、二元整数测试操作符-持续更新中

常用的文件测试操作符-持续更新中 -e--exist 文件存在为真 -f--file 文件存在且为普通文件为真 -d--directory 文件存在且为目录为真 -s--size 文件存在且大小不为零为真 -r--read 文件存在且可读为真 -w--write 文件存在且可写为真 -x--executable 文件存在且可执行为真 -L--link 文件存在且为链接文件则为真 f1 -nt f2--new than f1比f2新则为真 f1 -ot f2--old than f1比f2旧则为真

C 语言的若干问题(持续更新中)

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump