2016-12-03 2 views
0

Я хочу хранить данные из шаблона, который не находится в том же каталоге, что и представления. Моя форма находится в mysite/style.html < -data, вставляемые в эту форму, я хочу передать их в моделях из другого приложения под названием «services».Объект «NoneType» не может быть вызван django cms

/mysite/это мой корневой каталог.

<form name = "form" action="{% url 'services.views.add_style' %}" method = "POST" class="form-inline">{% csrf_token %} 
     <div class="col-sm-6 form-group"> 
      <input class="form-control" id="style" name="name" placeholder="style" type="style" required> 
     </div> 
     <div class="col-sm-6 form-group"> 
      <input class="form-control" id="color" name="color" placeholder="color" type="color" required> 
     </div> 

     <input class="form-control" id="positions" name="positions" placeholder="positions" type="positions" required> 
     <input class="form-control" id="font_size" name="font_size" placeholder="font_size" type="font_size" required> 
     <input class="form-control" id="background" name="background" placeholder="background" type="background" required> 
     <input class="form-control" id="font" name="font" placeholder="font" type="font" required> 
     <button class="btn btn-default pull-right" type="submit">Send</button> 
</form> 

чем я отделенные приложение под названием "услуги"

Вот views.py

def add_style(request): 
    if request.method == "POST": 
     style = request.POST.get('style') 
     color = request.POST.get('color') 
     positions = request.POST.get('positions') 
     font_size = request.POST.get('font_size') 
     background = request.POST.get('background') 
     font = request.POST.get('font') 
     Model = style(style=style, color=color, positions=positions, font_size=font_size, background=background, font=font) 
     Model.save() 

    return redirect('/') 

и models.py

class style(CMSPlugin): 
     style = models.CharField(max_length=30) 
     color=RGBColorField(max_length=30) 
     positions = models.CharField(max_length=30) 
     font_size = models.CharField(max_length=30) 
     background = models.CharField(max_length=100) 
     font = models.CharField(max_length=100) 

     def __str__(self): 
      return self.style 

Traceback показывает ошибку в этой строке

Model = style(style=style, positions=positions, font_size=font_size, background=background, font=font) 

ответ

0

Проблема заключается в форме HTML вы используете: В этой строке:

<input class="form-control" id="style" name="name" placeholder="style" type="style" required> 

Атрибут имени определяется как имя, но в вашем views.py, вы используете:

style = request.POST.get('style') 

Так правильной формы HTML должен быть:

<form name = "form" action="{% url 'services.views.add_style' %}" method = "POST" class="form-inline">{% csrf_token %} 
    <div class="col-sm-6 form-group"> 
    <input class="form-control" id="style" name="style" placeholder="style" type="style" required> 
    </div> 
    <div class="col-sm-6 form-group"> 
    <input class="form-control" id="color" name="color" placeholder="color" type="color" required> 
    </div> 

    <input class="form-control" id="positions" name="positions" placeholder="positions" type="positions" required> 
    <input class="form-control" id="font_size" name="font_size" placeholder="font_size" type="font_size" required> 
    <input class="form-control" id="background" name="background" placeholder="background" type="background" required> 
    <input class="form-control" id="font" name="font" placeholder="font" type="font" required> 
    <button class="btn btn-default pull-right" type="submit">Send</button> 
</form> 
0

Y ou имеет класс с именем style, а также локальную переменную с именем style, которая переопределяет это имя.

class style(CMSPlugin): 
    ... 

style = request.POST.get('style') # this is None, and also overrides your class 
... 
Model = style(style=style, color=color,) # you are trying to call None() 

Если вы соблюдали соглашение об именовании классов с титульным правом, вы бы избежали этой ошибки.

class Style(CMSPlugin): # Title case 
    ... 

style = request.POST.get('style') # No shadowing of other variable 
... 
model = Style(style=style, color=color,) 
+0

Django также имеет ModelForm точно для случаев, подобных этому, когда форма соответствует непосредственно модели. –

Смежные вопросы