2016-07-12 104 views
0

我想从提交HTML数据的数据库(PostgreSQL的)。我正在使用Django我学习它。我点击提交按钮后,出现以下错误Postgres的。数据库提交从HTML表单

error

形式为:

<form action="\polls\Registration" method="POST"> 
 
       <div class="form-group mb15"> 
 
       <input type="text" class="form-control" name="userName" placeholder="Enter Your Username" required> 
 
       </div> 
 
       <div class="form-group mb15"> 
 
       <input type="text" class="form-control" name="password" placeholder="Enter Your Password"> 
 
       </div> 
 
       <div class="form-group mb15"> 
 
       <input type="text" class="form-control" name="fullName" placeholder="Enter Your Full Name"> 
 
       </div> 
 
       <div class="form-group mb20"> 
 
       <label class="ckbox"> 
 
        <input type="checkbox" name="checkbox"> 
 
        <span>Accept terms and conditions</span> 
 
       </label> 
 
       </div> 
 
       <div class="form-group"> 
 
       <button class="btn btn-success btn-quirk btn-block">Create Account</button> 
 
       <br> 
 
       <a href="/polls/signin" class="btn btn-default btn-quirk btn-stroke btn-stroke-thin btn-block btn-sign">Already a member? Sign In Now!</a> 
 
       </div> 
 
      </form>

模型为:

from __future__ import unicode_literals 
 

 
from django.db import models 
 

 
# Create your models here. 
 
from django.db import models 
 
from django import forms 
 

 
class Blog(models.Model): 
 
    name = models.CharField(max_length=100) 
 
    tagline = models.TextField() 
 

 
    def __str__(self):    # __unicode__ on Python 2 
 
     return self.name 
 

 
class Author(models.Model): 
 
    name = models.CharField(max_length=50) 
 
    email = models.EmailField() 
 

 
    def __str__(self):    # __unicode__ on Python 2 
 
     return self.name 
 

 
class Entry(models.Model): 
 
    blog = models.ForeignKey(Blog) 
 
    headline = models.CharField(max_length=255) 
 
    body_text = models.TextField() 
 
    pub_date = models.DateField() 
 
    mod_date = models.DateField() 
 
    authors = models.ManyToManyField(Author) 
 
    n_comments = models.IntegerField() 
 
    n_pingbacks = models.IntegerField() 
 
    rating = models.IntegerField() 
 

 
    def __str__(self):    # __unicode__ on Python 2 
 
     return self.headline 
 

 
class Registration(models.Model): 
 
\t userName=forms.CharField(max_length=200) 
 
\t password=forms.CharField(widget=forms.PasswordInput) 
 
\t fullName=forms.CharField(max_length=250)

urls.py

from django.conf.urls import url 
 
from django.contrib import admin 
 
from . import myview 
 
from . import view 
 
from . import models 
 
from django.conf.urls import include,url 
 
urlpatterns = [ 
 
    url(r'^$', myview.index,name='index'), 
 
    url(r'^admin/', admin.site.urls), 
 
    url(r'^accounts/', include('registration.backends.simple.urls')), 
 
    url(r'^accounts/', include('registration.backends.model_activation.urls')), 
 
    #url(r'^$',myview.index1, name='index1'), 
 
    #url(r'^$',view.index2, name='index2'), 
 
    url(r'^index', myview.index,name='index'), 
 
    url(r'^index2', myview.index2,name='index2'), 
 
    url(r'^signup', myview.signup,name='signup'), 
 
    url(r'^signin', myview.signin,name='signin'), 
 
    url(r'^logiin', myview.login,name='login'), 
 
    url(r'^auth', myview.auth_view,name='auth_view'), 
 
    url(r'^signout', myview.signout,name='signout'), 
 
    url(r'^Registration', models.Registration,name='Registration'), 
 
]

我提交后,细节不提交到数据库表也。

请哪里是错误吗?任何提示?

+0

太棒了!祝你好运,记住你总是可以问一个描述性的问题,包括你已经尝试和研究过的[如果]你卡住了! – Sayse

+0

我试过了。请检查上面编辑的代码 – Colo

+0

请阅读[问]。另外,您的'Registration'类没有任何模型字段 - 只有表单字段。 – Sayse

回答

1

你需要创建一个注册视图。

的URL()函数需要一个视图,并呼吁该视图get函数。 目前您正在为注册网址提供一个运行模型。它试图运行get方法,但是你的模型没有一个,因此错误。

在你的视图文件

尝试沿着线的东西:

class RegistrationView(FormView): 
    model = Registration 
    template_name = 'path to your tamplate here' 
    def get(self, *args, **kwrags): 
     # code here to display the empty form 
    def post(self, *args, **kwrags): 
     # code here to handle the request with a populated form. 

这个例子是一个基于类的FormView。 https://docs.djangoproject.com/en/1.9/ref/class-based-views/generic-editing/#formview

它可能更容易使用基于功能的视图开始(更多的打字,少'魔术')。 可能是一个好主意,通读相关文件: https://docs.djangoproject.com/en/1.9/topics/forms/