首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python web 开发之初识Django

Python web 开发之初识Django

作者头像
TestOps
发布2022-04-07 13:44:19
发布2022-04-07 13:44:19
6760
举报
文章被收录于专栏:TestOps云层TestOps云层

照常的周五TestOps测试运维课程总结时间~

在上周六的全天课程以及这周三晚上的复习答疑课程,我们一起对Python web 开发框架——Django进行了进步的学习。

今天这篇文章芒果帮大家一起回顾一下课程内容。

Django小介绍

Django是一个高级Python Web框架, 鼓励快速,简洁, 以程序设计的思想进行开发。通过使用这个框架, 可以减少很多开发麻烦, 使你更专注于编写自己的app, 而不需要重复造轮子。

Django特点:

  • 完全免费并开源源代码
  • 快速高效开发
  • 使用MTV架构(熟悉Web开发的应该会说是MVC架构)
  • 强大的可扩展性

用户在浏览器中输入URL后的回车, 浏览器会对URL进行检查, 首先判断协议,如果是http就按照 Web 来处理, 然互调用DNS查询, 将域名转换为IP地址, 然后经过网络传输到达对应Web服务器。

服务器对url进行解析后, 调用View中的逻辑(MTV中的V), 其中又涉及到Model(MTV中的M), 与数据库的进行交互, 将数据发到Template(MTV中的T)进行渲染。

接着发送到浏览器中,最后浏览器以合适的方式呈现给用户。

Django安装

先安装好Python环境

开始安装Django:

方法一:

cmd命令:

pip3 install django

方法二:

官网下载Django-2.1.3.tar.gz

下载地址:

https://www.djangoproject.com/download/

解压Django-2.1.3.tar.gz

cmd命令:

cd Django-2.1.3

python setup.py install

检查是否安装成功:

import django

django.VERSION

构建Django项目虚拟环境:

cdm命令:

python -m venv django_env (django_env为虚拟环境名称)

激活虚拟环境:

cmd命令:

django_env\Scripts\activate (windows)

source django_env/bin/activate (linux)

创建Django项目和app:

cmd命令:

django-admin startproject mywebproject

创建Django app:

cmd命令:

python manage.py startapp myblog

在setting.py文件中添加app信息:

代码语言:javascript
复制
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myblog',
]

启动服务器:

cmd命令:

python mange.py runserver (8001)

也可使用Pycharm启动——Edit Configurations配host\port

规划URL

简洁优雅的 URL 规划对于一个高质量 Web 应用来说至关重要。Django 推崇优美的 URL 设计,所以不要把诸如 .php 和 .asp 之类的冗余的后缀放到 URL 里。

为了设计你自己的 URL,你需要创建一个叫做 URLconf 的 Python 模块。一张包含 URL 匹配模式和 Python 回调函数之间的映射表。URLconf 也有利于将 Python 代码与 URL 解耦合(译注:使各个模块分离,独立)。

示例:

代码语言:javascript
复制
from django.contrib import admin
from django.urls import path,re_path
from myblog import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('main/', views.main),
    path('login/', views.login),
    path('login_action/', views.login_action),
    path('logout/',views.logout),
    path('accounts/login/',views.login),
    path('authors/',views.authors),
    re_path('^myblog/authors/(?P<author_id>[0-9]+)/$',views.author_info),
    re_path('^myblog/authors/(?P<author_id>[0-9]+)/(?P<log_id>[0-9]+)/$',views.log_info),
    path('new_author/',views.new_author),
]

上面的代码将 URL 的正则表达式映射到 views 里的回调函数。正则表达式通过括号来提取 URL 中的参数值。当一个用户请求页面时,Django 会顺序遍历这些匹配模式,直至模式和请求的 URL 成功匹配。(如果全部模式都无法匹配,Django 会返回一个404视图。)这个过程会在瞬间完成,因为这些正则表达式在启动时就被编译了。

一旦其中一个正则表达式匹配成功,Django 就会导入并调用指定的视图——那是一个简单的 Python 函数。视图会被传进一个请求(requeset)对象——其中包含了请求元数据——和正则表达式匹配到的那些参数值。

比如:

如果用户请求了“/myblog/5/3/”这样的 URL,

Django 就会这样调用函数:

mylog.views.log_info(request,5,3)。

编写视图

视图函数的执行结果只可能有两种:返回一个包含请求页面内容的 HttpResponse 对象;或者是抛出 Http404 这类异常。至于视图接下来还要做什么则由你决定。

通常来说,一个视图的工作就是:从参数获取数据,加载模板,然后模板进行带数据的渲染。

示例:

代码语言:javascript
复制
from django.shortcuts import render
from myblog.models import Author

def authors(request):
    authors = Author.objects.all()
    return render(request,"authors.html",{"authors":authors})

设计模板

Django 允许设置搜索模板路径,这样可以最小化模板之间的冗余。

在Django设置中,你可以通过 DIRS 参数指定目录列表来检索模板。如果模板不在第一个目录中,就继续检查第二个,以此类推。

上面示例中加载了“authors.html”这个模板,它的实现可以是:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>作者列表</title>
</head>
<body>
    {% if authors %}
        <ul>
            {% for author in authors %}
                <li><a href="/myblog/authors/{{ author.id }}/">{{ author.name }}</a> <li>
            {% endfor %}
        </ul>
    {% else %}
        <p>当前没有作者注册</p>
    {% endif %}
</body>
</html>

变量都被双花括号括起来了。

{{ author.name }} 的意思是:“输出 auhtor 的 name 属性值”。

这个“点”不止用于查找属性,还可以查找字典键值、索引和函数调用。

以上只是 Django 的功能性概述。Django 还有更多实用的特性:

  • 缓存框架可以与 memcached 或其他后端集成。
  • 聚合器框架可以通过简单编写一个 Python 类来推送 RSS 和 Atom。
  • 更多令人心动的自动化管理功能:本文里面仅仅浅尝辄止。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TestOps 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档