2017-09-27 64 views
0

执行该POST操作之后清洗数据 - request.POST

我有难以清洁某种形式的字段我有以下模式:

class Article(models.Model): 
    author = models.ForeignKey(
     settings.AUTH_USER_MODEL, 
     on_delete=models.CASCADE 
    ) 

    title = models.CharField(max_length=120) 
    content = models.TextField() 
    updated = models.DateTimeField(auto_now=True, auto_now_add=False) 
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True) 

    image = models.ImageField(
     upload_to='article_images', 
     blank=True, 
     null=True, 
     verbose_name='Image' 
    ) 

    def get_absolute_url(self): 
     # return "/articles/%s/" %(self.slug) 
     return reverse("articles:detail", kwargs={'id': self.id}) 

    def __str__(self): 
     return self.title 

的形式,其打电话给我的模式是:

class ArticleForm(forms.ModelForm): 
    content = forms.CharField(widget=forms.Textarea) 
    ad = "Nuevo artículo" 
    class Meta: 
     model = Article 
     fields = ['title', 'content', 'image'] 

我创造的,我认为下面的方法的文章如:

def article_create(request): 
     form = ArticleForm(request.POST or None) 
     if form.is_valid(): 
      instance = form.save(commit=False) 
      form.instance.author = request.user 
      print(form.cleaned_data.get('title')) 
      print(form.cleaned_data.get('content')) 
      instance.save() 
      # Cleaning? 
      form.cleaned_data.get('title') 
      form.cleaned_data.get('title') 

我的模板是:

{% load bootstrap3 %} 
{% bootstrap_css %} 
{% bootstrap_javascript %} 
{% load staticfiles %} 
{% block title_tag %}Crear un artículo en {{ block.super }}{% endblock %} 


{% block body_content %} 
<div class="offert-form"> 
    <h1> 
    {% if not form.instance.slug %} 
     {{ form.ad }} 
     {% else %} 
     Actualizar artículo 
     {% endif %} 
    </h1> 

    <form class="stayhost" method="POST" enctype="multipart/form-data"> 
    <div class="head"> 
     <div class="ofert-icon"> 
      <img src="{% static 'img/icons/lang.svg' %}" alt=""> 
      <div class="title"> 
      <h2>Contenidos</h2> 
      <span>Crear un Artículo</span> 
      </div> 
     </div> 
     <div class="submit-button-cont"> 
      <div> 
       <input type="image" src="{% static 'img/icons/ok.png' %}" alt="Submit" width="48" height="48"> 
       <input type="submit" value="Guardar" class="submit-button"> 
      </div> 
     </div> 
    </div> 
    {% csrf_token %} 
     <div class="formgroup"> 
     {% bootstrap_field form.title %} 
     </div> 
     <div class="formgroup"> 
     {% bootstrap_field form.content %} 
     </div> 
     <div class="formgroup"> 
     {% bootstrap_field form.image %} 
     </div> 
    </form> 
</div> 
{% endblock %} 

当我做POST从我的表单,字段不是在形式的清洁。 如何清理窗体中的标题,内容和图像字段?

回答

1
  1. 使用instance.author = request.user代替form.instance.author = request.user
  2. 可以使用clean_<fild>功能进行清洗。这里是an example from documentation
+0

是的,这个示例是伟大的,当我使用基于类的视图,在我没有清楚如何使用基于函数的视图中的清洁数据。对于新手的情况,我表示歉意 – bgarcial