• Django 创建一个应用程序


    1. 认识Django

    • Django是一个高级的Python Web框架,它鼓励快速开发和清洁,务实的设计。
    • 由经验丰富的开发人员构建,它负责Web开发的许多麻烦,因此您可以专注于编写应用程序,而无需重新创建轮子。
    • 它是免费的和开源的。
    • 被官方称之为完美主义者的Web框架。
    • Django可以更快地构建更好的Web应用程序并减少代码。

    2. Django框架的特点:

    • 快速开发:Django的宗旨在于帮助开发人员快速从概念到完成应用程序。

    • 安全可靠:Django认真对待安全性,帮助开发人员避免许多常见的安全错误。

    • 超可伸缩性: Web上的一些最繁忙的网站利用了Django快速灵活扩展的能力

    3.安装

    作为Python Web框架,Django需要Python,在安装Python同时需要安装pip。

    在线安装Django

    pip3 install Django

    检测当前是否安装Django及版本

    python3 -m django --version

    1.11.7

     4.创建项目

      在你即将书写项目的目录中输入一下命令来创建一个项目,最好是一个全新的空目录

      django-admin startproject mysite

    5.运行开发服务器
    • $ cd 进入mysite目录
    • $python3 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.(注意:现在忽略关于未执行应用数据库迁移的警告)
      
      August 07, 2017 - 15:50:53
      Django version 1.11, using settings 'mysite.settings'
      Starting development server at http://127.0.0.1:8000/
      Quit the server with CONTROL-C.
      

      以上说明已经开始使用Django的开发服务器,这是一个纯粹以Python编写的轻量级Web服务器。 我们将其与Django结合在一起,因此您可以快速开发,而无需处理配置生产服务器(如Apache),直到您准备好生产。

    • 默认情况下,该runserver命令在端口8000的内部IP上启动开发服务器。当然也可以指定端口开启服务,如8080端口:
      $ python3 manage.py runserver 8080
    

      如果要更改服务器的IP,请将其与端口一起传递。例如:

      $ python manage.py runserver 192.168.194.132:8000
    

      注意:通过IP访问后报如下错误:

      DisallowedHost at /polls
      Invalid HTTP_HOST header: '192.168.*.*:8000'. You may need to add '192.168.*.*' to ALLOWED_HOSTS.
    
      HTTP_HOST标头无效:'192.168.*.*:8000'。您可能需要将“192.168.*.*”添加到ALLOWED_HOSTS
      解决:
      进入 mysite/settings.py文件
      ALLOWED_HOSTS = ['192.168.194.132']

    6.创建一个应用程序

    •  要创建您的应用程序,请确保您与目录位于同一目录,manage.py 并键入以下命令:
      mysite$ python3 manage.py startapp polls
    • 这将创建一个目录polls,其目录如下:此目录结构将容纳轮询应用程序。

      [root@localhost demo]# tree mysite/
      mysite/
      ├── manage.py
      ├── mysite
      │   ├── __init__.py
      │   ├── settings.py
      │   ├── urls.py
      │   └── wsgi.py
      └── polls
          ├── admin.py
          ├── apps.py
          ├── __init__.py
          ├── migrations
          │   └── __init__.py
          ├── models.py
          ├── tests.py
          └── views.py

    定义我们的第一个视图

    我们来写第一个视图。打开文件polls/views.py 并放入以下Python代码:

    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("Hello, world. You're at the polls index.")
    
    •  这是Django中最简单的视图。要调用视图,我们需要将其映射到一个URL - 为此,我们需要一个URLconf。

      要在polls目录中创建一个URLconf,创建一个名为urls.py。您的应用目录应该如下所示:

    └── polls
        ├── admin.py
        ├── apps.py
        ├── __init__.py
        ├── migrations
        │   └── __init__.py
        ├── models.py
        ├── tests.py
        ├── urls.py
        └── views.py
    • 在polls/urls.py文件中包含以下代码:
    from django.conf.urls import url
    
    from . import views
    
    urlpatterns = [
        url(r'^$', views.index, name='index'),
    ]
    
    •  下一步是将根URLconf指向polls.urls模块。 在 mysite/urls.py添加一条import用于django.conf.urls.include和插入include()的urlpatterns列表,所以你必须:
    from django.conf.urls import include, url
    from django.contrib import admin
    
    urlpatterns = [
        # url(r'^admin/', admin.site.urls),
        url(r'^polls/', include('polls.urls')),
    ]
    
    • 其中include()函数允许引用其他URLconfs。请注意,该include()函数的正则表达式 没有$(字符串匹配字符),而是尾部的斜杠。 每当Django遇到时 include(),它会排除与该点匹配的任何部分,并将剩余的字符串发送到随附的URLconf进行进一步处理。
    • 背后的想法include()是使即插即用的URL变得容易。由于民意调查是在自己的URLconf(polls/urls.py)中,它们可以被 放置在“/ polls /”下面,或者在“/ fun_polls /”下面,或者在“/ content / polls /”或其他路径根目录下,工作。
    • 注:include()当您包含其他网址格式时,您应始终使用。 admin.site.urls是唯一的例外。
    • 您现在已将index视图连接到URLconf中。让它验证它的工作,运行以下命令:
    $ python3 manage.py runserver 0:8000
    
    • 在浏览器中转到http:// localhost:8000 / polls /,您应该看到文本"Hello, world. You're at the polls index."

    7.设置Django 模板

    • 在manage.py文件的同级目录中创建一个文件夹 templates

      mysite$ mkdir templates

    • 在templates目录下创建一个hello.html文件

      

    <html>
    <head>
        <meta charset="utf-8">
        <title>测试模板</title>
    </head>
    <body>
        <h1>hello world</h1>
    </body>
    </html>
    
    •  接下来我们需要向Django说明模板文件的路径,修改settings.py,

      修改 TEMPLATES 中的 DIRS 为[BASE_DIR+"/templates",]

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR,"templates")],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    • 给当前的模板设置一个url路由,并配置视图

    • polls/urls.py路由
    from django.conf.urls import url
    
    from . import views
    
    urlpatterns = [
        url(r'^$', views.index, name='index'),
        url(r'^tmp/', views.tmp, name='tmp'),
    ]
    
    • polls/views.py 视图
    # 注意:需导入from django.shortcuts import render
    from django.shortcuts import render
    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("Hello, world.")
    
    def tmp(request):
        return render(request,"hello.html")
    
    访问流程
    
    1,在浏览器输入http://localhost:8000/polls/tmp/
    
    2,我们的请求会被主路由 捕获 并发送给 子路由 url(r'^polls/', include('polls.urls')),
    
    3,在子路由中会被会被引导进入 views文件中的tmp方法中
    
    4.,在views视图的tmp方法中会去加载templates文件夹下的hello.html并返回给访问者
    
  • 相关阅读:
    2020-08-11 题目题解
    N皇后问题
    逆序对(模板)
    归并选择(模板)
    快速选择(模板)
    快速排序(模板)
    vuecli4+elementui实现面包屑
    vue-路由导航(守卫)那些事
    vue-vant中ImagePreview 图片预览正确的打开方式
    Selenium 对表格table处理
  • 原文地址:https://www.cnblogs.com/Fantinai/p/8289393.html
Copyright © 2020-2023  润新知