中间一大波重复的,有办法精简吗?
def index(request):
return HttpResponse("hello world")
#软件页面
def software(request):
soft=SoftWare.objects.all()
content = {'soft':soft}
return render(request,'soft_index.html',content)
#软件内容页面
def software_detail(request,software_id):
soft= SoftWare.objects.get(id=str(software_id))
content = {'soft':soft}
return render(request,'soft_detail.html',content)
#博客首页
def blog(request):
post = Article.objects.all()
content ={'post':post}
return render(request,'blog_index.html',content)
#博客内容页面
def blog_detail(request,blog_id):
post= Article.objects.get(id=str(blog_id))
content = {'post':post}
return render(request,'blog_detail.html',content)
#脚本首页
def bash(request):
bash = Bash.objects.all()
content ={'bash':bash}
return render(request,'bash_index.html',content)
#脚本内容页面
def bash_detail(request,blog_id):
bash= Article.objects.get(id=str(blog_id))
content = {'bash':bash}
return render(request,'bash_detail.html',content)
#视频首页
def video(request):
post = Video.objects.all()
content ={'video':video}
return render(request,'video_index.html',content)
#视频内容页面
def video_detail(request,blog_id):
post= Video.objects.get(id=str(blog_id))
content = {'video':video}
return render(request,'video_detail.html',content)
1
sfwn 2016 年 11 月 19 日 software_id 和 blog_id 可以设默认值,然后方法里判断下
|
4
Jblue 2016 年 11 月 19 日
意思就是将 software_id 和 blog_id 可以区别开
|
5
Daniel65536 2016 年 11 月 19 日 via iPad def page_factory(pagename, obj, template):
---- return lambda request: render(request, template, { pagename: obj.all() } video = page_factory( 'video', Video.objects, 'video_index.html') bash = page_factory( 'bash', Bash.objects, 'bash_index.html') |
6
nooper 2016 年 11 月 19 日 via iPad 你可以用 mixin
|
7
jimzhong 2016 年 11 月 19 日
这样写 view 也没啥问题啊,只要性能不差,维护方便就好
|
8
menc 2016 年 11 月 19 日 @Daniel65536 像这个,就是典型的不可维护的代码,只关注炫技,完全不关注业务的内在联系
|
9
wyntergreg 2016 年 11 月 19 日
不需要精简
|
10
srlp 2016 年 11 月 19 日
没什么好办法。
我个人想法是,你非要简化的话可以用类来包装一下,然后用 override 实现多态。 |
11
youyongsong 2016 年 11 月 19 日
看上去这些 view 并没有什么真正的业务逻辑,都是 model 驱动的普通的 CRUD ,这样的情况直接用 Django 的 generic views 就行不需要自己写 view 内容。
|
12
zhuangzhuang1988 2016 年 11 月 19 日
不需要的吧。。
|
13
7sDream 2016 年 11 月 19 日
generic views + 1
|
14
reus 2016 年 11 月 19 日
不需要精简,不然改动的时候你就知道烦了。
|
15
rim99 2016 年 11 月 20 日 def fun(selector):
----'''selector 是 str 类型标识符 ----dict_func = {selector : func, ... ...} ----dict_page = {selector : page, ... ...} ----content = {selector : SoftWare.objects.dict[selector]() } ----return render(request, dict_page[selctor], content) 其他函数直接向 func 传递 selector 标识符就可以了 |
16
t0p10 2016 年 11 月 28 日
写的挺好的,改了反而难以读懂
|