Django学习笔记 --1 Hello world!

来源:互联网 发布:手机拨号软件 编辑:程序博客网 时间:2024/05/18 00:35

有了以前学习的基础,再看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命令参数)。

命令行中:

这里写图片描述

浏览器中请求访问http://127.0.0.1:8000/ (没有在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.        """        ...        ...

来让浏览器访问http://127.0.0.1:8000/ 收到 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应用中对应的视图函数的内容,生成响应发送给浏览器(客户端)。

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

这里写图片描述


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

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

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

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

原创粉丝点击