Python Web 框架:Django MVC搭建

安装 Django

  • 命令:

pip install Django

  • 检验:

pythonimport djangodjango.get_version()

创建第一个项目

  • 命令:

django-admin.py startproject projectName

创建完成后文件目录:

   |-- projectName     # 项目的容器。
    |   |-- __init__.py # 一个空文件,告诉 Python 该目录是一个 Python 包
    |   |-- settings.py # 该 Django 项目的设置/配置
    |   |-- urls.py     # 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"
    |   `-- wsgi.py     # 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目
    `-- manage.py       # 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互

启动服务器

  • 用如下命令启动服务:

python manage.py runserver 0.0.0.0:8000

  • 在浏览器端输入 http:\127.0.0.1:8000 ,得到 django 初始页面。

视图和 URL 配置

  • ge:

    • 在项目文件夹下(E:/projectName/projectName)新建一个 view.py 文件

      from django.http import HttpResponse
       
       def hello(request):
       return HttpResponse("Hello world ! ")
    • 绑定 URL 与视图函数:打开 urls.py 文件,删除原来代码

      from django.conf.urls import url 
       from . import view
      ​
      urlpatterns = [
      url() 可以接收四个参数
      @ regex: 正则表达式,与之匹配的 URL 会执行对应的第二个参数 view。
      @ view: 用于执行与正则表达式匹配的 URL 请求。
      @ kwargs: 视图使用的字典类型的参数。
      @ name: 用来反向获取 URL。
      ```
      url(r'^$', view.hello),
      ]
    • 启动 Django 开发服务器,并在浏览器访问打开浏览器并访问 http:\127.0.0.1:8000

Django 模板

  • 在 projectName 创建文件(templates),并建立 index.html 文件

输入代码

<h1>{{ hello }}</h1>

  • 修改模板文件 settings.py 里 TEMPLATES 中的 DIRS 值为 [BASE_DIR+"/templates",]

...TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [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',
            ],
        },
    },
]
  • 修改 view.py

# -- coding: utf-8 --
# from django.http import HttpResponse
from django.shortcuts import render
​
def hello(request):
​
    context          = {}
    context['hello'] = 'Hello World!'
    return render(request, 'hello.html', context)

这样我们就完成了数据与视图的分离

Django 模板标签

  • 基本格式:{% 关键字 %}

  • ge:

{% if condition1 %}
    ... display 1
{% elif condition2 %}
    ... display 2
{% else %}
    ... display 3
{% endif %}
{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% endfor %}
{% for athlete in athlete_list %}
    <h1>{{ athlete.name }}</h1>
    <ul>
    {% for sport in athlete.sports_played %}
        <li>{{ sport }}</li>
    {% endfor %}
    </ul>
{% endfor %}

Django 模型

Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。

  • 步骤:

    • 安装相应数据库驱动,如下以 mysql 为例

      • 命令 pip install mysqlclient pip install psycopg2

    • 数据库配置,在项目setting.py 中找到 DATABASES 配置项,修改为:

      # projectName/projectName/settings.py: 文件代码
      ​
      DATABASES = {
      ​
      'default': {
          'ENGINE': 'django.db.backends.mysql',  # 或者使用 mysql.connector.django
          'NAME': 'test',
          'USER': 'test',
          'PASSWORD': 'test123',
          'HOST':'localhost',
          'PORT':'3306',
          }
      }
    • 定义模块:

      Django规定,如果要使用模型,必须要创建一个app。我们使用以下命令创建一个 TestModel 的 app

      • 在 projectName/ 下使用命令:django-admin.py startapp TestModel

   - 在models.py 文件中创建模型,如
​
      ```
      # projectName/model/models.py
      from django.db import models
      '''''
      类名代表了数据库表名
      字段代表数据表中的字段(name)
      数据类型
      @ CharField(相当于varchar)
      @ DateField(相当于datetime)
      @ max_length 参数限定长度
      '''''''
      class Test(models.Model):
        name = models.CharField(max_length=20)
      ```
​
- 在settings.py中找到INSTALLED_APPS这一项,添加model
​
    ```
    INSTALLED_APPS = (
​
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'TestModel',               # 添加此项
    )
    ```

资源文件的加载

在 projectName/ 文件夹下建 static 文件,并在setting.py 中加入如下配置

# 静态文件
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)

最终项目结构如下:

|-- projectName
    |-- projectName     # 项目的容器。
    |   |-- init.py     # 一个空文件,告诉 Python 该目录是一个 Python 包
    |   |-- settings.py # 该 Django 项目的设置/配置
    |   |-- urls.py     # 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"
    |   `-- wsgi.py     # 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目
    |-- model
    |   |-- models.py   # 与数据库表对应的model
    |   |-- ....
    |-- templates
    |   |-- html        # html 视图文件
    |   |-- index.html  # 平台首页
    |-- static          # js \ css \ img 等资源文件
    `-- README.md       # 项目文档
    `-- manage.py       # 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互

 

转载于:https://my.oschina.net/dwqdwd/blog/1787753

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值