【问题标题】:Can't store data in database无法将数据存储在数据库中
【发布时间】:2017-07-21 17:46:58
【问题描述】:

customers_form.html

      <form>
        <fieldset class='text-center'>
          <legend>Create your Account</legend>
            <div>
                <form action="" method="post" enctype="multipart/form-data">
                    {% csrf_token%}
                    {% include 'registration/form-template.html' %}
                    <div class="form-group">
                        <div align="center" >
                            <input type="submit" class="btn btn-success" value="submit"/>
                            <input type="hidden" name="next" value="{{ next }}" />
                        </div>
                    </div>
                </form>
            </div>
            <br>
            <a href="forgot_password.html">Forgot password?</a>
        </fieldset>
      </form>

form-template.html

{% for field in form %}
    <div class="form-group">
        <div class="col-som-offset-2 col-som-10">
            <span class="text-danger small">{{ field.errors }}</span>
        </div>
        <label >{{ field.label_tag }}{{ field }}</label>
    </div>
{% endfor %}

app/urls.py

from django.conf.urls import url
from . import views
from django.contrib.auth import views as auth_views

app_name = 'registration'

urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='registration'),
    url(r'^customer/add/$', views.UserFormView.as_view(), name='customer-add'),

]

项目/urls.py

from django.conf import settings
from django.contrib.auth import urls
from django.conf.urls.static import static
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'', include('registration.urls')),
    url(r'^accounts/', include('django.contrib.auth.urls'))

]

views.py

from django.views import generic
from .models import customers
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.views import View
from .forms import UserForm
from django.contrib.auth.decorators import login_required


class IndexView(generic.ListView):
    template_name = 'registration/home.html'

    def get_queryset(self):
        return customers.objects.all()


class UserFormView(View):
    form_class = UserForm
    template_name = 'registration/customers_form.html'

    # display blank form
    def get(self, request):
        form = self.form_class(None)
        return render(request, self.template_name, {'form': form})

    # process form data
    def post(self,request):
       form = self.form_class(request.POST)

       if form.is_valid():
           user = form.save(commit=False)

           username = form.cleaned_data['username']
           password = form.cleaned_data['password']
           user.set_password(password)
           user.save()

           # return username if credentials are correct
           user = authenticate(username=username, password=password)

           if user is not None:

                if user.is_active:
                   login(request, user)
                   return redirect('registration:index')
       return render(request, self.template_name, {'form': form})

当我单击注册按钮时,它会重定向回注册表单并且不显示任何错误。一切正常,但没有在 django 的用户模型中存储数据。

forms.py

from django import forms
from django.contrib.auth.models import User
from django.forms import ModelForm


class UserForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = [
            'username',
            'email',
            'password',
         ]

我想在 django 的 User 模型中注册用户,但是我不能。

【问题讨论】:

  • 请提供您的表格和型号。另外,试着用英语解释这个页面的目的。没有人愿意通过代码来解释你想做的事情,因为它可能是错误的,而且解释起来很痛苦。
  • 我想注册用户,使用 django 的 'django.contrib.auth.urls'。但是当我点击提交按钮时,什么也没有发生,它再次重定向到注册页面..

标签: django django-models django-forms django-views


【解决方案1】:

你的表单标签没有动作...

&lt;form action="" method="post" enctype="multipart/form-data"&gt;

action 属性告诉表单发布到哪里。那应该是您的 POST 数据所在的 URL。此外,您似乎没有任何输入...

【讨论】:

  • 在注册用户时可能有什么行为属性??
  • 我相信你会是customer/add
  • 它不起作用...还有其他解决方案吗? #杰克丹尼森
  • 仔细检查您的 URL 是否正确。看看这个documentation。我向你保证,这就是问题所在。
猜你喜欢
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多