• MVC 介绍
  • Django 介紹

 

MVC 介绍

controllers 处理用户请求

views 放置HTML模版

models 操作数据库

MVC框架就是目录的归类

MVC 是一种软件开发的方法,它把代码的定义和数据访问的方法(模型)与请求逻辑 (控制器)还有用户接口(视图)分开来

 

Django 介紹

Django开发的一般流程包括模型设计、URL设计、视图编码、模板设计,搭建Django应用的一种典型流程是:先设计好模型,然后就尽快把admin 运行起来,以便你的员工、客户可以尽快开始填充数据。之后,你再考虑该如何把数据呈现给用户

创建 Django  

  1. 创建 project
    django-admin startproject mysite
    • 创建一个叫 mysite 的 project,会自动生成以下几个 py 文件:
    • setting.py #配置文件, 例如增加缓存功能,加密加盐
    • urls.py #路由系统,URL 保存了一个函数和网页的对应关系
    • wsgi.py #WSGI,封装了socket 对象和功能,它是一套规则、接口
    • manage.py #负责管理 Django 程序,比如创建 APP,运行 Django 程序和在数据库中创建表
  2. 创建虚拟环境,用来安装 django 
    virtualenv -p python3 venv
  3. 创建 App
    创建一个程序叫 app01,在这个文件夹下面有 migrations 文件夹和以下的 py 文件
    cd mysite
    python3 manage.py startapp app01

    生成的文件

    migrations/		# 数据修改表结构
    admin.py		# Django 为我们提供的后台管理
    apps.py			# 配置当前 App
    models.py		# ORM,写指定的类 通过命令创建数据库结构表
    tests.py		# 单元测试
    views.py		# 业务代码
  4. 运成 Django 程序
    python3 manage.py runserver 127.0.0.1:8000
  5. 注册 App
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01', # 注册 APP
    ]
  6. 在 sqlite 中创建表
    python3 manage.py makemigrations
    python3 manage.py migrate
  7. xxxx

URL设计

在 URL 中写入相对的路径,下面例子加了一个 h.html 的 url 路径,你只须要访问时 http://127.0.0.1:8000/h.html/ 就可以看到 home 函数返回的 <h1>Welcome to GRILLFISH!</h1>, django 必须返回 HttpResponse 对象,在 URL 路由中有 Function Based View (FBV) 和 Class Based View (CBV) 之分,你可以在路由中输入视图函数 views.login 或者是类视图函数 views.Home.as_view( )

from django.shortcuts import HttpResponse

def home(request):
    return HttpResponse('<h1>Welcome to GRILLFISH!</h1>')

urlpatterns = [
    path('admin/', admin.site.urls),
    path('h.html/', home), #url 路径和函数对应关系
]

URL 路由中正規表达式的用法

用户可以在 urls 中以正規表达式来设计路由規则,好的路由设计是一个好网站的基本条件

from django.urls import path, re_path
from app01 import views
urlpatterns = [
    path(r'index/', views.index),
    re_path(r'fakedindex/(?P<year>\d+)/', views.index, name="index"),
    re_path(r'details/(\d+)/', views.details), # 导入 re_path 来使用正規表达式
]

定义好路由規则,然后定义 views.py

# views.py
def index(request):
	USER_DICT = {
    1: {'username':'root1','email':'root1@live.com'},
    2: {'username':'root2','email':'root2@live.com'},
    3: {'username':'root3','email':'root3@live.com'},
    4: {'username':'root4','email':'root4@live.com'},
    5: {'username':'root5','email':'root5@live.com'},
	}	
    return render(request, 'index.html',{'user_list': USER_DICT})

和 html 的 render 方法

<p>
    {% for k, v in user_list.items %}
        <li><a target="_blank" href="/details/{{k}}/"> {{v.username}} </a></li>
    {% endfor %}
</p>

不同正規表达式的路由定义对应的函数方法也有些不同,可以用以下几个方法生成 url,具体方法如下:

url(r'^details-(\d+)-(\d+).html', views.details)
# views.py
def func(request, nid, uid):
    pass
def func(request, *args):
    args = (2,9)
def func(request, *args, **kwargs):
    args = (2,9)

url(r'^details-(?P<nid>\d+)-(?P<uid>\d+).html', views.details)
# views.py
def func(request, nid, uid):
    pass
def func(request, **kwargs):
    kwargs = {'nid': 2, 'uid': 9}
def func(request, *args, **kwargs):
    args = (2,9)
正規表达式和函数的定义

相关文章:

  • 2022-12-23
  • 2022-03-10
  • 2021-06-20
  • 2022-12-23
  • 2021-12-06
  • 2021-09-08
  • 2021-07-22
  • 2022-03-07
猜你喜欢
  • 2021-11-20
  • 2021-07-25
  • 2021-05-30
  • 2022-02-04
  • 2021-11-12
  • 2021-07-05
  • 2021-09-07
相关资源
相似解决方案