zoukankan      html  css  js  c++  java
  • Django的第一步(第一节)

    写下你的第一个Django应用


    第一部分

        让我们通过例子来学习.

        在本教程中,我们将引导您完成基本投票应用程序的创建.

        其中包括两部分:

    • 一个让人们查看民意调查并投票的公共网站.
    • 允许您添加,更改和删除民意调查的管理网站.

        我们假设你django已经安装好了,你可以通过下面的shell命令得知django的版本:

    python -m django --version

        如果django已经安装好了,你可以看到安装的版本.如果没有,你会得到错误提示"No module named django".

        这个教程基于django2.0,支持python3.4以及后面的版本.如果django的版本不匹配,可以在右下角选择合适的版本,或者升级django版本.如果你正在使用老版本的python,你可以根据下图去找到合适的点击django版本.



    创建一个项目

        如果这是你第一次使用django,你会关心一些初始化设置.换句话说,你需要下面的指令自动生成一个django项目,其中包含数据库配置,django特定的选项和应用特定的选项.

        从命令行,cd进入你想创建django项目的文件夹,然后执行下面的指令:    

    django-admin startproject mysite

        这条命令将会在你的文件夹中创建一个mysite文件夹.

    注释:

        你需要避免在创建django项目与python或django内置组件相同,尤其是,你应该避免使用django(与django本身发生冲突)或者test(与python内置文件冲突).

    代码应该放置在哪?

        如果你的背景是普通的旧PHP(没有使用现代框架),那么你可能习惯于把代码放在Web服务器的文档根目录下(比如/ var / www).用Django,你不这样做.将任何Python代码放入Web服务器的文档根目录中并不是一个好主意,因为它有可能让人们能够通过Web查看您的代码.这样安全性不好.    

        将代码放在文档根目录之外的某个目录中,例如/ home / mycode.

    让我们看看startproject这个指令都创建了什么:

    mysite/
        manage.py
        mysite/
            __init__.py
            settings.py
            urls.py
            wsgi.py
    下面解释这些文件:
    • 外部的mysite/是你项目的容器.它的名字不影响django;你可以随你喜欢地修改名字
    • manage.py:一个代码管理工具,可以让你用各种方式与django进行交互.你可以读到关于manage.py的所有功能在django-admin and manage.py
    • 内部的mysite/是你django项目的实际文件夹.它的名字是你需要用来导入任何内容的Python包名(例如:mysite.urls)
    • mysite/__init__.py:一个空的文件用来告诉python,这个文件夹是一个python包.如果你是一个python初学者,建议你先了解一下python包的含义
    • mysite/setting.py:用于配置django的设置.通过django settings可以了解到settings的工作方式
    • mysite/urls.py:django项目的url管理器,可以设置你django项目可以访问的网页url.通过URL dispatcher可以了解更多关于URLS
    • mysite/wsgi.py:WSGI兼容的Web服务器为您的项目提供服务的入口点

    ---------------------------------------------------------------------------------------------------------------------

    开发服务器

        让我们检验我的django项目.进入外部mysite目录,运行下面的指令:

    python manage.py runserver
    

        你可以看到下面的命令行输出    

    Performing system checks...
    
    System check identified no issues (0 silenced).
    
    You have unapplied migrations; your app may not work properly until they are applied.
    Run 'python manage.py migrate' to apply them.
    
    April 11, 2018 - 19:22:09
    Django version 2.0.4, using settings 'blogproject.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CONTROL-C.
    注释:

        现在请忽略数据库迁移的问题,这个问题会在稍后进行处理.

        你已经开始使用django开发服务器了,这是一个纯粹用Python编写的轻量级Web服务器.这些功能我们已经在django中包含了,所以你可以很快地进行开发,你可以直接进行开发,不需要去配置生产服务器,比如像Apache这样的网页服务器.

        注意注意!不要在类似于生产环境的任何情况下使用此服务器。它仅用于开发时使用。 (我们的业务是制作Web框架,而不是Web服务器。)    

        现在服务器正在运行,可以通过http://127.0.0.1:8000/来访问你的网页,你可以看到"The install worked successfully! Congratulations!",还有一个起飞的火箭,说明它正在工作.

    切换端口:

        runserver这个命令默认会以8000作为端口号开启服务器.

        如果你想要改变服务器的端口号,将它作为命令的参数输入.下面是个例子,这个命令开启服务器在8080端口上:

    python manager.py runserver 8080
    

        你如果你想改变服务器的IP地址,将ip地址与端口号一起作为参数传递即可,如果出现错误,如下

    Invalid HTTP_HOST header: '127.1.1.1:8080'. You may need to add '127.1.1.1' to ALLOWED_HOSTS.

        说明你需要把该IP加入setting.py文件中ALLOWED_HOSTS中即可.

        如果你想收听所有可用的公共IP(如果你正在运行Vagrant或希望在网络上的其他计算机上炫耀你的工作,这很有用),请使用:

    python manage.py runserver 0:8000
    
    00.0.0.0的简称.有关开发服务器的完整文档可以在runserver参考中找到。

        

    自动重新加载服务器:

        您无需重新启动服务器以使代码更改生效。但是,某些操作(如添加文件)不会触发重新启动,因此在这种情况下您必须重新启动服务.

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------

    创建一个Polls应用:

        现在你的服务器环境已经搭建好了,你可以开始工作了.

        你在django中编写的每一个应用都遵循特定的python包. django带有一个实用的工具可以自动生成应用的基本目录结构,所有你可以把注意力放在写代码上而不是创建文件目录.

    项目对比应用:

        项目和应用的不用是什么呢?应用是网页应用程序,它可以执行一些操作,比如公共记录数据库或者简单的投票系统.项目是一个特定网页配置和网页应用程序的集合,一个项目可以包含多个应用,一个应用可以在多个项目中.

        你的所有应用可以在你python路径上的任何地方.在本教程中,我们会创建Poll应用与manage.py文件同一个路径下,所以它可以被直接作为主模块被调用,而不是作为mysite的子模块.

        创建你的应用,确认你已经进入了与manage.py同目录下,然后执行下面的目录:

    python manage.py startapp polls

        这个命令创建了polls文件夹, 其中目录像下面这样:

    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
        这个文件夹将包含我们的投票系统应用.

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------

    编写你的第一个视图:

        让我们编写第一个视图.打开polls/views.py这个文件然后将下面的python代码写入:

    polls/views.py中       

    from django.http import HttpResponse
    
    
    def index(request):
        return HttpResponse("Hello, world. You're at the polls index.")

        这是可能是django中最简单的视图了.要调用这个视图,我们需要将它映射到一个URL - 为此我们需要一个URLconf.

        需要创建一个URLconf在polls文件夹中.创建一个文件叫做urls.py.你的文件夹现在应该是这样:

    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        urls.py
        views.py

        在polls/urls.py文件中加入下面的代码:

    polls/urls.py文件中

    from django.urls import path
    
    from . import views
    
    urlpatterns = [
        path('',views.index, name='index'),
    ]

        下一步是将根的URLconf指向polls.urls模块.在mysite/urls.py添加导入django.urls.include然后在urlpatterns列表中添加一个include(),以便导入polls.urls模块:

    mysite/urls.py文件中

    from django.contrib import admin
    from django.urls import path,include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('polls/',include('polls.urls')),
    ]
    

        include()函数允许访问其他的URLconf.任何时候django碰到include()函数,它会暂停在这个URL在当前URLconf中的匹配,转而进入include函数中的URLconfs中找寻匹配.

        include()函数的主要想法是让引用URLs更加方便.因为投票是在自己的URLconf中(polls/urls.py),他们可以被放置在"/polls/"之下,或者"/fun_polls/"之下,或者"/content/polls/"之下,或者其他根目录之下,这个应用都可以工作.

    什么时候使用include()函数?
        你应该总是使用include()函数当你要添加其他URL模型时.admin.site.urls 是唯一一个不可以使用的例外.

        你现在已经将一个视图连接到URLconf了,现在验证它是否工作,运行下面的指令:

    python manage.py runserver
    

        通过浏览器访问http://localhost:8000/polls/,然后你应该可以看到"Hello, world. You’re at the polls index.",这些是你在index中写下的.

        path()函数会传递四个参数,其中两个是必须的:路径(route)视图(view),两个可以可选属性:kwargs名字(name).我们需要回顾一下这四个参数.

    路径(route)

    路径是一个字符串,包含了URL模型.处理请求时,django从urlpattens第一个URL开始往下,匹配请求的URL,直到找到一个匹配的URL.

    视图(view)

    当django找到匹配的URL模式,它将HttpRequest对象作为第一个参数并将路由中的任何“捕获”值作为关键字参数调用指定的视图函数.我们将稍微举一个例子.

    kwargs
    关键字参数可以在字典中传递给目标视图,我们不打算在教程中使用Django的这个特性。

    名字(name)

    命名你的URL可以让你从django其他地方明确地引用它,特别是在模板中.这个强大的功能允许你只在单个文件中对项目的URL模式进行全局修改.

    如果你对基本请求和响应流程这一节感到满意,请阅读本教程的第2节以开始使用数据库。








  • 相关阅读:
    3D 服务器端以向量计算为主的角色位置的算法
    宇宙中可见物质为 4%,暗物质和暗能量占 96% 是怎么算出来的?
    量子纠缠
    “人的第一感觉(直觉)其实非常准”
    有哪些看似荒谬,其实很科学的理论@知乎、@量子力学
    CPU/寄存器/内存
    原子操作
    简单的介绍下WPF中的MVVM框架
    IOS开发中,TextField和TextView有何区别
    年后小结
  • 原文地址:https://www.cnblogs.com/GF66/p/9785489.html
Copyright © 2011-2022 走看看