博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django学习笔记 --1 Hello world!
阅读量:4100 次
发布时间:2019-05-25

本文共 3737 字,大约阅读时间需要 12 分钟。

有了以前学习的基础,再看Django,能理解很多东西了。


Django的安装(Windows 命令行中):

virtualenv learn_djangolearn_django\Scripts\activatepip install Django

使用Django-admin新建一个ToDoList项目:

Django-admin startproject todolist

ToDoList项目结构如下:

mysite/    manage.py    mysite/        __init__.py        settings.py        urls.py        wsgi.py

暂时不做任何处理,直接使用在命令行中运行python manage.py runserverpython manage.py 运行python模块,多输入了一个runserver命令参数)。

命令行中:

这里写图片描述

浏览器中请求访问 (没有在Django应用中写响应内容,从本地服务器收到了默认响应的页面):

这里写图片描述

下面贴上了部分源码,不管具体过程,现在创建了本地WSGI 服务器,可以处理客户端的请求。

manage.py :

import osimport sysif __name__ == "__main__":    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ToDoList.settings")    try:        from django.core.management import execute_from_command_line    ...    ...    execute_from_command_line(sys.argv)

django.core.management.py :

def execute_from_command_line(argv=None):    """    A simple method that runs a ManagementUtility.    """    utility = ManagementUtility(argv)    utility.execute()
class ManagementUtility(object):    """    Encapsulates the logic of the django-admin and manage.py utilities.    """    ...    ...    def execute(self):        """        Given the command-line arguments, this figures out which subcommand is        being run, creates a parser appropriate to that command, and runs it.        """        ...        ...

来让浏览器访问 收到 Hello, World! 响应:

(1) 在ToDoList中新建一个ToDo应用(命令行中python manage.py startapp ToDo),

DjangoToDo应用分成了很多的部分,符合MVC模式,:

ToDo/    migrations/        __init__.py    __init__.py    admin.py    apps.py    models.py    tests.py    views.py

(2) 将ToDo应用添加到ToDoList/settings.py/INSTALLED_APPS列表中:

INSTALLED_APPS = [    'ToDo.apps.ToDoConfig'    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',]

(3) ToDo应用中,migrations 文件夹与数据迁移有关,暂时没什么数据,先不管。

__init__.py 初始化应用,暂时不管。
admin.py 大概管理员身份运行应用,暂时用不到。
apps.py 有ToDo应用的基本信息((2)中添加到了ToDoList项目中):

from __future__ import unicode_literalsfrom django.apps import AppConfigclass TodoConfig(AppConfig):    name = 'ToDo'

model.py 处理数据相关,暂时不用管。

test.py用于测试应用,暂时用不到。
views.py 负责将数据展示给客户端,现在能用到。

(4) 在views.py 中写一个index()视图函数,视图函数最后返回一个模板响应,这个和Flask中一样,模板中是响应内容:

ToDo/views.py :

# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.shortcuts import render# Create your views here.def index(request):    return render(request,'index.html')

(5) 在ToDo应用中新建一个urls.py文件,添加路由和视图函数的映射关系:

ToDo/urls.py:

from django.conf.urls import urlfrom . import viewsurlpatterns = [    url(r'^$', views.index, name="index"),]

(6) 将上述ToDo应用中的路由-视图函数映射关系添加到ToDoList项目中:

"""ToDoList URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:    https://docs.djangoproject.com/en/1.11/topics/http/urls/Examples:Function views    1. Add an import:  from my_app import views    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')Class-based views    1. Add an import:  from other_app.views import Home    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')Including another URLconf    1. Import the include() function: from django.conf.urls import url, include    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))"""from django.conf.urls import url, includefrom django.contrib import adminurlpatterns = [    url(r'^$', include('ToDo.urls')),    url(r'^admin/', admin.site.urls),]

完成以上代码,浏览器再发送请求到本地服务器,本地服务器会根据请求的URL调用Django应用中对应的视图函数的内容,生成响应发送给浏览器(客户端)。

然后,浏览器中访问,本地WSGI server 会处理请求,返回一个响应给浏览器,浏览器中会看到index() 视图函数返回的index.html模板中的内容。

这里写图片描述


以上,大概是运行Django应用的过程。

核心的东西和Flask差不多,客户端-服务器模式、请求-响应、路由-视图函数、模板渲染、MVC模式(或者叫MVT模式)。

果然,FlaskDjango是不同的开发框架,只是工具。计算机和网络的基层原理才是重要的知识。

以后应该多学习基本原理,然后再看框架就会很清楚为什么要这样了。

你可能感兴趣的文章
影响科学圈的那些计算机代码
查看>>
乐视视频 App 图标改为“欠 122 亿”,网友:我在别家分红包,却在你家随份子!...
查看>>
乔布斯18岁求职信拍卖价22.24万美元,值吗?
查看>>
为何程序员总喜欢写技术博客,看完恍然大悟...
查看>>
假如计算机是中国人发明的,那代码应该这么写
查看>>
科技公司最爱的 50 款开源工具,你都用过吗?
查看>>
触目惊心:比特币到底消耗了多少能源?
查看>>
面试官:简历上敢写技术精通?那我就不客气了!
查看>>
如何判断一家互联网公司要倒闭了?
查看>>
想快速上手机器学习?来看下这个 GitHub 项目!
查看>>
GitHub 标星 3.6k,一本开源的深度学习中文教程!
查看>>
9 款你不能错过的 JSON 工具
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
200页!分享珍藏很久的Python学习知识手册(附链接)
查看>>
程序员之神
查看>>
4 岁小女孩给 Linux 内核贡献提交
查看>>
推荐几个私藏很久的技术公众号给大家
查看>>
王垠受邀面试阿里 P9,被 P10 面跪后网上怒发文,惨打 325 的 P10 赵海平回应了!...
查看>>
Python 趣味打怪:147 段简单代码助你从入门到大师
查看>>
卧槽!小姐姐用动画图解 Git 命令,这也太秀了吧?!
查看>>