新建Django项目

1. 创建项目

使用Django提供的命令,可以创建一个Django项目实例需要的配置项——包括数据库配置、Django配置和应用程序配置的集合。新建Django项目命令的语法格式如下:

django-admin startproject 工程名称

例如:想要在D:\的pythonProject目录中创建一个名为mysite的项目工程,可执行如下命令:

cd d:\pythonProject
django-admin startproject mydemo

执行后,会多出一个新目录名为mydemo,此即为新创建的工程目录。

2. 项目目录说明

  • mydemo : 根目录,项目的容器
  • manage.py:一个提供Django项目管理功能的命令行工具
  • **子mydemo:**一个纯Python包,其中存放项目文件,在引用项目文件时会使用到这个包名。
  • mydemo\settings.py 是项目的整体配置文件。
  • mydemo\urls.py 是项目的URL配置文件。
  • mydemo\wsgi.py 是项目与WSGI兼容的Web服务器入口。

    3. 启动项目

    在开发阶段,为了能够快速预览到开发的效果,django提供了一个纯python编写的轻量级web服务器,仅在开发阶段使用。

    运行服务器命令如下:

    python manage.py runserver ip:端口
    或:
    python manage.py runserver
    

    可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000。

    • django默认工作在调式Debug模式下,如果增加、修改、删除文件,服务器会自动重启。

    • 按ctrl+c停止服务器。

    • 默认情况下开发服务器在本地IP的8000端口上启动,若要更改端口,可将端口作为命令行参数传递。例如在端口8080上启动服务器,命令如下所示:

      python manage.py runserver 8080
      

      4. 创建应用

      在Web应用中,通常有一些业务功能模块是在不同的项目中都可以复用的,故在开发中通常将工程项目拆分为不同的子功能模块,各功能模块间可以保持相对的独立,在其他工程项目中需要用到某个特定功能模块时,可以将该模块代码整体复制过去,达到复用。在Django中, 把这一个个子功能模块成为应用,一个Django项目可以包含多个Django应用,每个应用可在多个项目中被重复利用

      在django中,创建应用模块目录可以通过命令来操作,即:

      python manage.py startapp 应用名称
      

      manage.py 为上述创建工程时自动生成的管理文件。

      例如,在刚才创建的mysite工程中,想要创建一个用户users应用模块,可执行:

      python manage.py startapp users
      

      4.1 应用目录说明

      • admin.py 文件: 跟网站的后台管理站点配置相关。
      • apps.py 文件: 用于配置当前应用的相关信息。
      • migrations 目录: 用于存放数据库迁移历史文件。
      • models.py 文件: 用户保存数据库模型类。 m : model v: view T: Template
      • tests.py 文件: 用于开发测试用例,编写单元测试。
      • views.py 文件: 编写视图函数,MVT模型中的V。
      • db.sqlite3 : 轻量级关系型数据库,django默认使用sqlite数据库

        4.2 注册应用

        创建出来的子应用目录文件虽然被放到了工程项目目录中,但是django工程并不能立即直接使用该应用,需要注册安装后才能使用。

        在工程配置文件settings.py中,INSTALLED_APPS项保存了工程中已经注册安装的子应用,初始工程中的INSTALLED_APPS如下:

        注册安装一个应用的方法,即是将子应用的配置信息文件apps.py中的Config类添加到INSTALLED_APPS列表中。

        例如,将刚创建的demo子应用添加到工程中,可在INSTALLED_APPS列表中添加**‘demo.apps.DemoConfig’**。

        4.3 在pycharm中 打开Django项目

        • 找到项目的根目录,打开Django项目
        • 设置项目的python解析器

          5. 创建视图、定义路由

          Django的视图是定义在应用的views.py中的。

          5.1 创建视图

          打开刚创建的users模块,在views.py中编写视图代码。

          from django.http import HttpResponse
          # 127.0.0.1:8000/index
          def index(request):
              """
              index视图
              :param request: 包含了请求信息的请求对象
              :return: 响应对象
              """
              return HttpResponse("hello the world!")
          # 127.0.0.1:8000/detail
          def detail(request):
              """
              index视图,首页视图
              :param request: 请求对象
              :return: 响应对象
              """
              return HttpResponse('详情页')
          
          • 视图函数的第一个传入参数必须定义,用于接收Django构造的包含了请求数据的HttpReqeust对象,通常名为request。
          • 视图函数的返回值必须为一个响应对象,可将要返回的字符串数据放到一个HTTPResponse对象中。

            5.2 定义路由URL

            为了保证服务器能成功找到用户请求的页面,需为应用配置路由。在应用users中创建子路由文件urls.py,分别配置根路由和子路由,配置信息分别如下:

            • 在应用中新建一个urls.py文件用于保存该应用的路由。

            • 在users/urls.py文件中定义子路由信息。

              from django.urls import path
              from . import views
              # urlpatterns是被django自动识别的路由列表变量
              urlpatterns = [
                  # 每个路由信息都需要使用url函数来构造
                  # url(路径, 视图)
                  path('index/', views.index),
                  path('detail/', views.detail),
              ]
              
            • 在项目工程总路由mydemo/urls.py中添加users应用的路由信息

              from django.contrib import admin
              from django.urls import path, include
              urlpatterns = [
                  path('admin/', admin.site.urls),
                  path('demo/', include('demo.urls'))
              ]
              
              • 使用include来将子应用users里的全部路由包含进项目路由中;
              • ‘demo/’ 决定了users应用的所有路由都已**/demo/开头,如我们刚定义的视图index,其最终的完整访问路径为/demo/index/**。

                6. 在Pycharm中创建Django项目

                使用pycharm创建Django项目时默认使用最新的版本

                当安装成功后,再打开项目解析器设置,效果如下

                修改settings.py文件

                解决办法: