2017-02-22 2 views
-1

Я пытаюсь получить данные из формы модели, а затем поместить ее в базу данных. Я выяснил, как сделать форму, но при нажатии кнопки отправки она, кажется, не помещается нигде в моей базе данных. Я делаю что-то неправильно или я не смотрю в нужное место в базе данных.Как я могу получить данные из модели формы в базу данных в Django

forms.py

from django import forms 
from sxsw.models import Account 

class AccountForm(forms.ModelForm): 
    class Meta: 
     model = Account 
     fields = ['firstName', 'lastName', 'email'] 

views.py

from django.shortcuts import render 
from django.shortcuts import redirect 
from .forms import AccountForm 
from .models import Account 

def sxsw(request): 
    if request.method == 'POST': 
     form = AccountForm(request.POST) 
     if form.is_valid(): 
      form.save() 
     else: 
      print form.errors 
    else: 
     form = AccountForm() 

    return render(request, 'sxsw/sxsw.html', {'form': form}) 

def formSubmitted(request): 
    return render(request, 'sxsw/formSubmitted.html',{}) 

models.py

from __future__ import unicode_literals 

from django.db import models 

# Create your models here. 

class Account(models.Model): 
    firstName = models.CharField(max_length = 50) 
    lastName = models.CharField(max_length = 50) 
    email = models.EmailField() 

    def __unicode__(self): 
     return self.firstName 

class Module(models.Model): 
    author = models.ForeignKey(Account, on_delete = models.CASCADE) 
    nameOfModule = models.CharField(max_length = 150) #arbitrary number 
    moduleFile = models.FileField(upload_to = 'uploads/')#Not exactly sure about the upload_to thing 
    public = models.BooleanField() 

    def __unicode__(self): 
     return self.nameOfModule 

sxsw.html

{% extends "base.html" %} 

{% block content %} 
    <div class="container-fluid"> 
     <div class="jumbotron text-center"> 
      <h3>SXSW Form</h3> 
     </div> 

    </div> 

    <div align="center"> 
     <h1>New Form</h1> 
     <form role='form' action="/sxsw/formSubmitted/" method="post"> 
      {% csrf_token %} 
      {{ form.as_p }} 
      <button type="submit">Submit</button> 
     </form> 
    </div> 


    </div> 
{% endblock %} 

formSubmitted.html

{% extends "base.html" %} 

{% block content %} 
    <div class="container-fluid"> 
     <div class="jumbotron text-center"> 
      <h3>Form Successfully submitted</h3> 
     </div> 

    </div> 

    <div align="center"> 
     <a href="{% url 'sxsw' %}" class="btn">Submit Another Response</a> 
    </div> 


    </div> 
{% endblock %} 

ответ

2

Ваша форма размещения на то, что я полагаю, это неправильный URL-адрес

<form role='form' action="/sxsw/formSubmitted/" method="post"> 

должны использовать URL для представления SXSW

<form role='form' action="/sxsw/" method="post"> 

После отправки, вы, вероятно, хотите, чтобы перенаправить на представленный вид

return redirect('/sxsw/formSubmitted/') # Preferably use the url pattern name here 
+1

Спасибо, что исправил его! – karllawson

0

Похоже, ваша форма action установлен в /sxsw/formSubmitted/, что всегда просто вернуть поданную страницу, вместо URL, который будет называть sxsw видом где называются метод сохранения формы.

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