Django初探(二) 分类:网络编程Django

来源:互联网 发布:快消品拜访客户软件 编辑:程序博客网 时间:2024/06/11 14:15

在创建admin账号及密码后只有通过登录才能访问子页面。

使admin具有polls的接口,在polls中admin文件中添加如下代码:
admin.site.register(Question)(need .models.Question django.contrib.admin)
之后在admin页面中就可以对polls接口进行访问。

下面对views增加一些细节,用到正则表达式 (?P):分组,除了原有的编号外再指定一个额外的别名。
EX:(?abc){2} 匹配abcabc :指定abc有别名id 并匹配2次(”{}”指定匹配前一个字符窜若干次)
+ 与 * 的区别在于一个是匹配前一个1次或任意次,另一个是匹配前一个0次或任意次。

可以看到urls中对正则表达式的分组取法,直接作为参数传给views中相应的函数并作为展示网页的参数。
注意这里为参数指定别名,并与views中的参数相符合是必要的。(所以这里的参数顺序是无所谓的)

通过将字典对象传给模板render可以进行模板渲染,其中数据可以在数据库中选取得到。
有两种不同的模板渲染方法,一种是传统的template.render方法,其直接返回渲染后的字符串,
另一种是return render(request, “模板路径”, 渲染模板的变量) (django.shortcuts:render)
后一种方法不用导入 django.http:HttpResponse 及 django.template:loader

django.shortcuts 提供了一些便捷的函数 如上面快速渲染模板的render 及当要对一个对象按照某个条件寻找值时,
可以使用get_object_or_404 这是一个很好的将get方法与返回404相结合的简写。(相当于用404进行异常捕获)
与前面Question.objects.filter相对应的是,提供了get_list_or_404(可能内部封装的也是相同的)

如果将对象直接作为渲染的条件,如{{question}}这时调用的是对象的str属性进行打印。
这里对于模板渲染的方式,其于调用相应python语句的方法有轻微的不同。
如 python: question.choice_set.all()
模板: {{% for choice in question.choice_set.al l%}}

对于模板的语法规则,可以知道的是对于语句(条件判断或循环需要使用形式{{% statements %}},
对于一般的渲染语句使用{{statements}})
当使用判断语句时经常搭配:
{{% if %}} {{% endif %}} 当满足if的条件时会显式这两者之间的部分
if 与python内建逻辑相同可以接受 and or not 作为逻辑判断条件。
但并不允许如python内建的使用多个的符合条件 如:and…or…(为了避免歧义)

 相应的{{% endfor %}}作为与{{% for %}}相对应的上述执行相同功能。     在使用模板for循环的过程中,django 在上述作用域中提供forloop.counter来对循环进行计数。     可以将其利用模板渲染出,可以用来生成调用的函数参数。

在模板渲染中有一些修改渲染url的方法,
例如,原模板渲染的方法:

换一种渲染方法:

这里引用了相应的正则表达式的内容:
url(r”^(?P[0-9]+)/$”, views.detail, name = “detail”)
从行为上其会将相应名称的url相应正则的原始部分提取出来,并利用question.id进行渲染。
所以好的修改url的方法是在urlpattern 中url的相应正则表达式部分进行修改,而模板渲染部分应当保留上面这种
“动态加载”的方式。

上面是对一个app (polls) 的处理方案,但当工程有多个app时,如果另一个app 的view.py某个url也有detail作为名称
的url,那在模板渲染时进行关于不同app的区分就是必要的,这时需要使用作用域的概念。
将渲染部分的代码改为:

 就会指定使用polls的 view.py中具有detail作为名称的url进行如上渲染。

一些html基础是要知道的:
html form标签用于用户设计表单提交,最一般的是form标签包含input标签用于文本输入。
注意: input没有结束标签。
input type属性定义类别 其中radio为单选按钮。
为input内部添加label标签,会使得input的作用域变大(当鼠标点击label中的文本时,与点击了input
相同)。
br标签表示换行,没有结束标签。

更多了解请浏览:http://blog.csdn.net/sinat_30665603

原创粉丝点击