博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django实战(4):scaffold生成物分析
阅读量:7240 次
发布时间:2019-06-29

本文共 2442 字,大约阅读时间需要 8 分钟。

在用一个插件生成了类似rails的scaffold,其实无非就是URLconf+MTV。让我们看看具体都生成了哪些东西。

首先是“入口”的定义即URLconf,打开urls.py:

from django.conf.urls.defaults import patterns, include, urlfrom depot.views import hellourlpatterns = patterns('',     url(r'^hello/ hello),)urlpatterns += patterns ('', (r'^depotapp/', include('depotapp.urls')),)

 

上面的代码中增加的配置行表示:以depotapp开头的url由depotapp/urls.py文件进行处理。

django的url配置中,除了(正则表达式,view函数)的方式外,还支持(正则表达式,include文件)的方式。通常把app自身相关的url写到自己的url配置文件中,然后在project中引用。

接下来看一下生成的depotapp/urls.py的内容:

from django.conf.urls.defaults import *from models import *from views import *urlpatterns = patterns('',    (r'product/create/$', create_product),    (r'product/list/$', list_product ),    (r'product/edit/(?P[^/]+)/$', edit_product),    (r'product/view/(?P[^/]+)/$', view_product),)

 

将CRU(没有D)的URL映射到了视图。而视图在depotapp/views.py中定义:

from django import formsfrom django.template import RequestContextfrom django.http import HttpResponse, HttpResponseRedirectfrom django.template.loader import get_templatefrom django.core.paginator import Paginatorfrom django.core.urlresolvers import reverse# app specific filesfrom models import *from forms import *def create_product(request):    form = ProductForm(request.POST or None)    if form.is_valid():        form.save()        form = ProductForm()    t = get_template('depotapp/create_product.html')    c = RequestContext(request,locals())    return HttpResponse(t.render(c))def list_product(request):      list_items = Product.objects.all()    paginator = Paginator(list_items ,10)    try:        page = int(request.GET.get('page', '1'))    except ValueError:        page = 1    try:        list_items = paginator.page(page)    except :        list_items = paginator.page(paginator.num_pages)    t = get_template('depotapp/list_product.html')    c = RequestContext(request,locals())    return HttpResponse(t.render(c))def view_product(request, id):    product_instance = Product.objects.get(id = id)    t=get_template('depotapp/view_product.html')    c=RequestContext(request,locals())    return HttpResponse(t.render(c))def edit_product(request, id):    product_instance = Product.objects.get(id=id)    form = ProductForm(request.POST or None, instance = product_instance)    if form.is_valid():        form.save()    t=get_template('depotapp/edit_product.html')    c=RequestContext(request,locals())    return HttpResponse(t.render(c))

 

视图中的相关内容比较多,主要的是模板,其次还有模型类、Paginator分页器、Form表单等等。

基本涵盖了典型的web应用交互的内容。

转载地址:http://okybm.baihongyu.com/

你可能感兴趣的文章
LINUX系统编程之IPC
查看>>
今天刚学的c++,两个程序。
查看>>
MBR扇区故障及修复
查看>>
磁盘分区
查看>>
获取jar包路径,遍历
查看>>
solidity智能合约[40]-memory属性
查看>>
【VMware vSAN 6.6】5.1.基于存储策略的管理:vSAN硬件服务器解决方案
查看>>
javascript基础修炼(10)——VirtualDOM和基本DFS
查看>>
ISTP论文发表 SCI论文发表 EI论文发表常识
查看>>
怎样轻松几步将视频转换成GIF
查看>>
离线批量数据通道Tunnel的最佳实践及常见问题
查看>>
ECS应用管理最佳实践
查看>>
12.throw和throws是的区别
查看>>
115.springboot + mybaties
查看>>
福建海峡银行使用ManageEngine统一管控业务应用系统
查看>>
ssh访问与控制
查看>>
java访问数据库
查看>>
皆大欢喜!iPhone不再耗电,续航增加就靠它
查看>>
路由重发布配置代码
查看>>
编写脚本 sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的 ID之和
查看>>