使用Django创建站点(1)

快速建立站点

# 创建新的conda环境
conda create -n django python django

# 创建新站点
django-admin startproject locallibrary
cd locallibrary

# 运行web服务器
python ./manage.py runserver

conda(4.10.3) 虚拟环境 - python: 3.7 - Django: 2.2.5 - mysqlclient: 1.3.14

mysqlclient 是可选的,没有支持最高版本的 PythonDjango 默认使用的数据库是 Sqlit3

学习目标...

  • 运用Django的工具创建网站和应用的框架。
  • 启动和停止开发用的服务器。
  • 创建模型(models)用来代表应用里的数据。
  • 运用Django的admin站点填充网站数据。
  • 面对不同的网络请求,创建视图函数(views)取回相应的数据。并把数据用模板(templates )渲染成HTML展示在浏览器里。
  • 创建网络分发器,将不同的URL模式分发给特定的视图函数(views)。
  • 添加用户认证和会话(sessions)管理网站行为和进入权限。
  • 使用表单。
  • 为应用编写测试。
  • 有效运用Django的安全系统。
  • 把应用布置到生产环境中。

建立新的应用

框架搭建网站的过程: - 使用django-admin工具创建工程的文件夹,基本的文件模板和工程管理脚本(manage.py)。 - 用manage.py 创建一个或多个应用。 - 在工程里注册新的应用。 - 为每个应用分配url。

locallibrary项目的子文件夹是整个网站的进入点: - settings.py 包含所有的网站设置。这是可以注册所有创建的应用的地方,也是静态文件,数据库配置的地方,等等。 - urls.py 定义了网站url到view的映射。虽然这里可以包含所有的url,但是更常见的做法是把应用相关的url包含在相关应用中,你可以在接下来的教程里看到。 - wsgi.py 帮助Django应用和网络服务器间的通讯。你可以把这个当作模板。 - manage.py 脚本可以创建应用,和数据库通讯,启动开发用网络服务器。

# 创建catalog应用框架
python manage.py startapp catalog

catalog应用框架需要后续的补充修改,以达到自己的预期 - views.py 视图 - models.py 模型 - tests.py 测试 - admin.py 网站管理设置 - apps.py 注册应用 - migration 文件夹,用来存储“migrations”——当你修改你的数据模型时,这个文件会自动升级你的数据库。 - 可能需要补充 url映射,网站模板,静态文件

站点的setting.py文件配置

  • ALLOWED_HOSTS 域名白名单,ALLOWED_HOSTS = ['127.0.0.1']
  • INSTALLED_APPS 注册应用。
    INSTALLED_APPS = [
        ...,
        'catalog.apps.CatalogConfig',
    ]
  • DATABASES 数据库,在Django文档里找到详细的配置数据库的方法
  • TIME_ZONE 时区 TIME_ZONE = 'Asia/Shanghai'
  • SECRET_KEY 密钥
  • DEBUG 日志,是否在网页显示错误信息

站点的urls.py文件配置 URL映射器

  • 将带有 catalog/ 的请求转发到模块 catalog.urls (使用相对路径 URL /catalog/urls.py)。
    # Use include() to add paths from the catalog application
    from django.conf.urls import include
    from django.urls import path
    
    urlpatterns += [
        path('catalog/', include('catalog.urls')),
    ]
  • 网站的根URL(例:127.0.0.1:8000)重定向到该URL:127.0.0.1:8000/catalog/
    #Add URL maps to redirect the base URL to our application
    from django.views.generic import RedirectView
    urlpatterns += [
        path('', RedirectView.as_view(url='/catalog/')),
    ]
  • 在开发期间启用静态文件的服务
    # Use static() to add url mapping to serve static files during development (only)
    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

数据库迁移

Django 使用对象关系映射器(ORM),会跟踪更改并创建数据库迁移脚本,运行以下命令来定义数据库中这些模型的表(确保你位于包含 manage.py 的目录中):

python manage.py makemigrations
python manage.py migrate

每当进行重大更改时,都应重新运行迁移并重新测试站点。

自此站点的整体骨架构建完成并运行,是时候开始编写代码,让这个网站做它应该做的事情了。

参考文献

本文依据此教程所撰