zoukankan      html  css  js  c++  java
  • [django]django corepython核心编程

    model meta排序

    class BlogPost(models.Model):
        title = models.CharField(max_length=150)
        body = models.TextField()
        timestamp = models.DateTimeField()
    
        class Meta:
            ordering = ('-timestamp',)
    
    def archive(request):
        posts = BlogPost.objects.all()[:10]
        return direct_to_template(request, 'archive.html',
            {'posts': posts, 'form': BlogPostForm()})
    
    def create_blogpost(request):
        if request.method == 'POST':
            form = BlogPostForm(request.POST)
            if form.is_valid():
                post = form.save(commit=False)
                post.timestamp = datetime.now()
                post.save()
        return HttpResponseRedirect('/blog/')
    
    

    django的form处理数据

    1.生成html
    2.验证数据合法性
    3.直接存库

    定义1个form

    class BlogPost(models.Model):
        title = models.CharField(max_length=150)
        body = models.TextField()
        timestamp = models.DateTimeField()
    

    以前是这样的

    class BlogPostForm(forms.Form):
        title = forms.CharField(max_length=150)
        body = forms.CharField(widget=forms.Textarea)
        timestamp = forms.DateTimeField()
    

    现在可以这样了

    class BlogPostForm(forms.ModelForm):
        class Meta:
            model = BlogPost
    

    在这个例子中,不信赖用户输入正确的时间戳,而是想让应用为每篇博文以可编程的方
    式添加这个内容。这一点不难,只须添加额外一个名为exclude的属性,从生成的HTML中
    移除这个表单项。向blog/models.py文件中添加相应的导入语句,并在该文件的底部,BlogPost
    定义的后面添加完整的BlogPostForm类。

    class BlogPostForm(forms.ModelForm):
        class Meta:
            model = BlogPost
            exclude = ('timestamp',)
    

    看下form如何生成html的

    除了save

    保存数据: 有了form后就不用这样保存数据了

    def create_blogpost(request):
        if request.method == 'POST':
            BlogPost(
            title=request.POST.get('title'),
            body=request.POST.get('body'),
            timestamp=datetime.now(),
            ).save()
        return HttpResponseRedirect('/blog/')
    

    可以这样

    def create_blogpost(request):
        if request.method == 'POST':
            form = BlogPostForm(request.POST)
            if form.is_valid():
                form.save()
        return HttpResponseRedirect('/blog/')
    

    遗憾的是,因为有timestamp,所以不能这样做。必须对前面的HTML表单生成过程进行特殊处理。所以需要像下面这样,使用if语句。

    if form.is_valid():
        post = form.save(commit=False)
        post.timestamp=datetime.now()
        post.save()
    
  • 相关阅读:
    Json操作(汇总)
    Jersey实现Client端:GET/PUT/POST/DELETE
    tomcat配置文件server.xml详解
    DB2 Catalog浅析&学习笔记
    《学习笔记》Maven
    【58沈剑架构系列】单点系统架构的可用性与性能优化
    JavaScript(获取或设置html元素的宽,高,坐标),确定和判断鼠标是否在元素内部,二级导航菜单鼠标离开样式问题解决
    纯CSS绘制三角形(各种角度)
    css3 box-sizing属性值详解
    css字体图标的使用方法
  • 原文地址:https://www.cnblogs.com/iiiiiher/p/9674637.html
Copyright © 2011-2022 走看看