Python 如何向Django项目添加第二个表单?

Python 如何向Django项目添加第二个表单?,python,django,Python,Django,我对Django、Python和一般web编程都是新手。我有一个可能是愚蠢的问题,但我在这里试图解决它从一个星期前 我有一个关于食品的Django项目,我想要两个表单,第一个是注册用户(membresia或usuario),这很好用。另一个是注册餐厅 我的Django版本是1.10 models.py from django.db import models from django.utils import timezone # Create your models here. class

我对Django、Python和一般web编程都是新手。我有一个可能是愚蠢的问题,但我在这里试图解决它从一个星期前

我有一个关于食品的Django项目,我想要两个表单,第一个是注册用户(membresia或usuario),这很好用。另一个是注册餐厅

我的Django版本是1.10

models.py

from django.db import models
from django.utils import timezone

# Create your models here.


class Membresia(models.Model):
    nombre = models.CharField(max_length=100)
    cedula = models.CharField(max_length=100)
    celular = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    ciudad = models.CharField(max_length=100)
    direccion = models.CharField(max_length=100)
    creado_en = models.DateTimeField(
                default=timezone.now)

class Restaurante(models.Model):
    nombre = models.CharField(max_length=100)
    nombre_responsable = models.CharField(max_length=100)
    direccion = models.CharField(max_length=100)
    celular = models.CharField(max_length=100)
    ciudad = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    creado_en = models.DateTimeField(
                default=timezone.now)
forms.py

from django import forms
from .models import Membresia, Restaurante





class membresiaform(forms.ModelForm):
    class Meta:
        model = Membresia
        fields = ('nombre', 'cedula','celular','email','ciudad','direccion')
        widgets = {
            'nombre':  forms.TextInput(attrs={'class': 'form-control','placeholder': 'Tu nombre'}),
            'cedula':  forms.TextInput(attrs={'class': 'form-control','placeholder': 'Tu número cédula'}),
            'celular': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Tu número celular'}),
            'email':   forms.TextInput(attrs={'class': 'form-control','placeholder': 'Tu correo electrónico'}),
            'ciudad':  forms.TextInput(attrs={'class': 'form-control','placeholder': 'Ciudad donde vives'}),
            'direccion': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Tu dirección'}),

        }

class restauranteform(forms.ModelForm):
    class Meta:
        model = Restaurante
        fields = ('nombre','nombre_responsable','direccion','celular','ciudad','email')
        widgets = {
            'nombre': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Nombre del restaurante'}),
            'nombre_responsable': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Nombre del representante '}),
            'direccion': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Dirección del restaurante'}),
            'celular' : forms.TextInput(attrs={'class': 'form-control','placeholder': 'El celular de contácto'}),
            'ciudad': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Ciudad de ubicación restaurante'}),
            'email': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Correo eléctronico'}),

        }
views.py

from django.shortcuts import render,render_to_response
from .forms import membresiaform, restauranteform
from django.http import HttpResponseRedirect
from django.template import RequestContext
from django.views.decorators.csrf import csrf_protect
from django.utils import timezone





# Create your views here.


def registrar_usuario_web(request):
    if "submit_us" in  request.POST:

        form = membresiaform(request.POST)
        if form.is_valid():
            form.creado_en = timezone.now()
            form.save()

            return HttpResponseRedirect('/')
    else:
        form = membresiaform()

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

def registrar_restaurante_Web(request):
    if "submit_res" in  request.POST:
        form = restauranteform(request.POST)
        if form.is_valid():
            form.creado_en = timezone.now()
            form.save

            return HttpResponseRedirect('/')
    else:
        form = restauranteform()

    return render(request,'web/registrarrestaurante.html',{'form':form})
registerrestaurante.html

{% block content %}
        <form action="/restaurante/registrar/" method="POST">
            <div class="post">
              <h1>Registrar restaurante</h1>
              {% csrf_token %}
                  {{ form.as_p }}
          {% endblock %}


          <div class="form-group">
              <input type="submit" name="submit_res" class="btn btn-submit" value="Enviar">
          </div>
      </form>
{%block content%}
注册餐厅
{%csrf_令牌%}
{{form.as_p}}
{%endblock%}

我无法在我的餐厅数据库中保存数据。我没有看到错误,表格是有效的。如果我从Shell保存数据,就不会有问题。我在这里搜索了一些问题,但看起来每个人都有问题,可能会有两种不同的观点,但我认为这不是我的问题,我希望有人能帮助我,我将非常感激

我是一名rails开发人员,但我相信您也可以在Django中完成这项工作

我会将ID添加到每个提交按钮和表单中,然后使用JS提交它们

<input type="submit" name="submit_res" class="btn btn-submit" value="Enviar" id='submit_res'>

我是一名rails开发人员,但我相信您也可以在Django中完成这项工作

我会将ID添加到每个提交按钮和表单中,然后使用JS提交它们

<input type="submit" name="submit_res" class="btn btn-submit" value="Enviar" id='submit_res'>

无法将数据保存到表中的真正原因是:

form.save
应该是

form.save()

已经解决了另外几件事情要考虑的问题。例如,您的成员不应该被允许登录吗?如果是的话,你是在重新发明轮子。您可以使用django.contrib.auth.models.User作为您的用户模型,并使用经过多次尝试和测试的django身份验证系统(如django注册)中的一种来轻松完成此任务。

无法将数据保存到表中的真正原因是:

form.save
应该是

form.save()

已经解决了另外几件事情要考虑的问题。例如,您的成员不应该被允许登录吗?如果是的话,你是在重新发明轮子。您可以使用django.contrib.auth.models.User作为您的用户模型,并使用经过多次尝试和测试的django身份验证系统(如django registration)中的一个来完成此任务,几乎不费吹灰之力。

我很惭愧,这个错误太愚蠢了,非常感谢,我同时感到悲伤和高兴。事实上,我只是在练习这个例子,我不想登录,不过还是要谢谢你,因为现在我知道怎么做了。很高兴能帮上忙。每个人一开始都会犯这样的错误。我很惭愧,这个错误太愚蠢了,非常感谢,我同时感到悲伤和快乐。事实上,我只是在练习这个例子,我不想登录,不过还是要谢谢你,因为现在我知道怎么做了。很高兴能帮上忙。每个人一开始都会犯这样的错误。我的错误太愚蠢了,谢谢你,因为我的名誉,我不能投票给你。我的错误太愚蠢了,谢谢你,因为我的名誉,我不能投票给你。