[项目实训]SDUOJ的结构分析和Django进一步学习
来源:互联网 发布:域名 daddy 编辑:程序博客网 时间:2024/06/07 03:29
这几天在进一步学习Django框架的过程中,同时分析了一下我们SDUVJ的基础——SDUOJ的代码结构
可以看到SDUOJ中含有一个APP,OJ,同时SDUOJ
相关的设置文件等保存在OnlineJudge
中。
在models.py
文件中,我们可以看到OnlineJudge
的数据库设计,而在settings.py
之中保存了连接数据库的相关设置。
在urls.py
中保存了相关url
的设置,负责网站的页面跳转
在views.py
主要负责将前端所需要的数据从数据库中提取出来以及将前端所需要保存的数据保存到数据库中,相当于一个中间件,而这个也是网站的主要部分,负责处理各种用户请求
下面接着记录一下Django最近几天的学习
首先Django URL name一些细节的理解
例如这句代码url(r'^add/$', calc_views.add, name='add'), 这里的 name='add' 是用来干什么的呢?
简单说,name 可以用于在 templates, models, views ……中得到对应的网址,相当于“给网址取了个名字”,只要这个名字不变,网址变了也能通过名字获取到。
同时学到了不能写“死网址”。如果这样写“死网址”,会使得在改了网址(正则)后,模板(template),视图(views.py,用以用于跳转),模型(models.py,可以用用于获取对象对应的地址)用了此网址的,都得进行相应的更改,修改的代价很大,一不小心,有的地方没改过来,就不能用了。
另外了解了Django的模板系统,Django 的模板系统会自动找到app下面的templates文件夹中的模板文件。
同时想到网站模板的设计,
网站模板的设计,一般的,我们做网站有一些通用的部分,比如 导航,底部,访问统计代码等等
nav.html, bottom.html, tongji.html
可以写一个 base.html 来包含这些通用文件(include)
<!DOCTYPE html><html><head> <title>{% block title %}默认标题{% endblock %} </title></head><body> {% include 'nav.html' %} {% block content %}<div>这里是默认内容,所有继承自这个模板的,如果不覆盖就显示这里的默认内容。</div>{% endblock %} {% include 'bottom.html' %} {% include 'tongji.html' %} </body></html>
Django 模板查找机制: Django 查找模板的过程是在每个 app 的 templates 文件夹中找(而不只是当前 app 中的代码只在当前的 app 的 templates 文件夹中找)。各个 app 的 templates 形成一个文件夹列表,Django 遍历这个列表,一个个文件夹进行查找,当在某一个文件夹找到的时候就停止,所有的都遍历完了还找不到指定的模板的时候就是 Template Not Found (过程类似于Python找包)。这样设计有利当然也有弊,有利是的地方是一个app可以用另一个app的模板文件,弊是有可能会找错了。所以我们使用的时候在 templates 中建立一个 app 同名的文件夹,这样就好了。
这就需要把每个app中的 templates 文件夹中再建一个 app 的名称,仅和该app相关的模板放在 app/templates/app/ 目录下面,
- [项目实训]SDUOJ的结构分析和Django进一步学习
- 结构和sort进一步的了解
- [项目实训]Django学习
- Django 1.6 最佳实践: Django项目的布局结构和目录结构
- 进一步分析讨论线性结构
- 003 Django学习之项目结构介绍
- Django学习笔记二:结构分析
- 对spark和scala的进一步学习
- 需要进一步学习的知识点和总结
- HTML和CSS的进一步学习
- 浅析 Django 处理流程 和 结构分析 django
- AutoResetEvent的进一步分析
- assert的进一步分析
- Django项目结构
- Django项目结构布局
- 进一步学习的内容
- XML的进一步学习
- xml的进一步学习
- nginx服务器安装搭建
- 关于Django 中启动自带服务器进入后台admin没有样式的问题...
- 测试
- Mongodb在ubuntu下的安装和启动和配置
- Openfire 4.1.2 DOWNLOADS
- [项目实训]SDUOJ的结构分析和Django进一步学习
- 实现input数字语音播报,可扩展成任何语音audio实现,IE8兼容转flash实现
- Mysql存储过程简单学习
- JAVA网络编程基础知识--网络编程变迁
- 铺砖块
- Android启动相机拍照并返回图片
- 各平台预定义的宏
- linux线程函数总结
- Hexo + GitHub Page 搭建属于自己的博客