Django学习笔记 --1 Hello world!

124 篇文章 0 订阅

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


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

virtualenv learn_django
learn_django\Scripts\activate
pip 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 os
import sys

if __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_literals

from django.apps import AppConfig

class 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_literals

from 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 url

from . import views

urlpatterns = [
    url(r'^$', views.index, name="index"),
]

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

"""ToDoList URL Configuration

The `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, include
from django.contrib import admin

urlpatterns = [
    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是不同的开发框架,只是工具。计算机和网络的基层原理才是重要的知识。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值