2012-02-17 125 views
2

我有一个Django模型/视图/表单在模板中正确呈现,但它没有提交输入到数据库的数据。任何帮助,将不胜感激!Django表单没有提交

#models.py 

from django.db import models 
from django.forms import ModelForm 

class UserRegistration(models.Model): 
    user_first = models.CharField(max_length=50) 
    user_last = models.CharField(max_length=50) 
    user_email = models.EmailField() 
    #user_fantasyhost = models.CharField(max_length=50) 

    def __unicode__(self): 
     return u'%s %s %s' % (self.user_first, self.user_last, self.user_email) 

class RegForm(ModelForm): 
    class Meta: 
     model = UserRegistration 

#views.py 

from django.shortcuts import render_to_response 
from django.shortcuts import render 
from django.http import HttpResponse, HttpRequest, HttpResponseRedirect 
from acme.dc_django.models import UserRegistration 
from acme.dc_django.models import RegForm 

def regPage(request, id=None): 
    form = RegForm(request.POST or None, 
         instance=id and UserRegistration.objects.get(id=id)) 

    if request.method == 'POST' and form.is_valid(): 
     form.save() 
     return HttpResponseRedirect('/league_setup/') 
    user_info = UserRegistration.objects.all() 
    context = { 
     'form':form, 
     'user_info' :user_info, 
    } 

    return render(request, 'regpage.html', context) 

#repage.html 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
<HTML lang="en"> 
<head> 
    <title>User Registration</title> 
</head> 
<body> 

    <form method="POST" action="/league/"> 
     {% csrf_token %} 
     <table>{{ form }}</table> 
     <input type="submit" value="Create Account" 
    </form><br /><br /> 

</body> 
</HTML> 

感谢你的帮助,

DP

+1

您还没有关闭您的表单提交的标签,但这可能只是一个错字,你的浏览器可能可以处理它。这种问题通常比我们更容易调试。视图出错了?在视图中放置一些打印语句以查明。例如,什么是'form.is_valid()'的值。 – Alasdair 2012-02-17 21:23:23

+1

请你详细说明什么是不工作?我发现'但它没有提交输入到数据库的数据'混淆 – dm03514 2012-02-17 21:52:25

+0

你有错误吗? – Jurudocs 2012-02-17 22:20:42

回答

4

我想你的代码。您的问题是,您的html 表单标记动作属性设置为“/ league /”。

除非reqPage网址实际上是“/ league /”,否则它将不起作用。当我改变action="/league/"action=""这样:

<HTML lang="en"> 
<head> 
    <title>User Registration</title> 
</head> 
<body> 

    <form method="POST" action=""> 
     {% csrf_token %} 
     <table>{{ form }}</table> 
     <input type="submit" value="Create Account" /> 
    </form><br /><br /> 

</body> 
</HTML> 

形式工作:

In [3]: UserRegistration.objects.all() 
Out[3]: [<UserRegistration: aoeu oeu [email protected]>] 
+0

,我做了同样的事情,得到了同样的结果!感谢您的帮助! DP – dpbklyn 2012-02-20 18:11:08