Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用cbv和AbstractUser模型图像错误注册django_Python_Django_Web - Fatal编程技术网

Python 使用cbv和AbstractUser模型图像错误注册django

Python 使用cbv和AbstractUser模型图像错误注册django,python,django,web,Python,Django,Web,我尝试使用基于类的视图进行注册,但当我尝试将图像添加到表单字段时,我不断得到此字段是必需的,问题在于图像文件 这是forms.py文件 ` ` 和views.py文件 from django.shortcuts import render, redirect from django.views.generic import View, TemplateView from .forms import USerForm from django.contrib.auth import authenti

我尝试使用基于类的视图进行注册,但当我尝试将图像添加到表单字段时,我不断得到此字段是必需的,问题在于图像文件 这是forms.py文件 `

` 和views.py文件

from django.shortcuts import render, redirect
from django.views.generic import View, TemplateView
from .forms import USerForm
from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from django.views.generic.edit import UpdateView

# Create your views here.


@login_required(login_url="/jembe/login/")
def index(request):
    return render(request, 'base.html')


class SignUp(View):
    form_class = USerForm
    template_name = 'signup.html'

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

    def post(self, request):
        form = self.form_class(request.POST, request.FILES)
        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()
            user = authenticate(username=username, password=password)

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


class LogoutView(View):
    def get(self, request):
        logout(request)
        return HttpResponseRedirect('/jembe/login')


class AboutView(TemplateView):
    template_name = "about.html"
models.py文件

`from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.


class User(AbstractUser):
    company = models.CharField(max_length=300)
    description = models.TextField(blank=True)
    website = models.URLField()
    logo = models.ImageField(upload_to='../media/')

`
register.html

    {% load staticfiles %}
{% load i18n widget_tweaks %}

<!DOCTYPE html>
<html lang="en">

<head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">

        <link rel="shortcut icon" href="img/favicon_1.ico">

        <title>{% block title %} Signup {% endblock %} |Jims</title>
 ""



        <!-- Bootstrap core CSS -->
        <link href="{% static 'login/css/bootstrap.min.css' %}" rel="stylesheet">
        <link href="{% static 'login/css/bootstrap-reset.css' %}" rel="stylesheet">

        <!--Animation css-->
        <link href="{% static 'login/css/animate.css' %}" rel="stylesheet">

        <!--Icon-fonts css-->
        <link href="{% static 'login/assets/font-awesome/css/font-awesome.css' %}" rel="stylesheet" />
        <link href="{% static 'login/assets/ionicon/css/ionicons.min.css' %}" rel="stylesheet" />

        <!--Morris Chart CSS -->
        <link rel="stylesheet" href="{% static 'login/assets/morris/morris.css">


        <!-- Custom styles for this template -->
        <link href="{% static 'login/css/style.css' %}" rel="stylesheet">
        <link href="{% static 'login/css/helper.css' %}" rel="stylesheet">
        <link href="{% static 'css/style.css' %}" rel="stylesheet">
        <link href="{% static 'css/bootstrap.css' %}" rel="stylesheet">
        <link href="{% static 'css/main.css' %}" rel="stylesheet">

        <link rel='stylesheet prefetch' href='http://fonts.googleapis.com/css?family=Roboto:400,100,300,500,700,900|RobotoDraft:400,100,300,500,700,900'>
        <link rel='stylesheet prefetch' href='http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css'>


        <!-- HTML5 shim and Respond.js IE8 support of HTML5 tooltipss and media queries -->
        <!--[if lt IE 9]>
          <script src="js/html5shiv.js"></script>
          <script src="js/respond.min.js"></script>
        <![endif]-->

        <script>
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','../../../www.google-analytics.com/analytics.js','ga');

          ga('create', 'UA-62751496-1', 'auto');
          ga('send', 'pageview');

        </script>

    </head>


    <body>
        <div class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href=""><div class="logo">
                <a href="" class="logo-expanded">
                    <i class="ion-compose"></i>
                    <span class="nav-label">Jigs</span>
                </a>
            </div></a>
        </div>
        <div class="navbar-collapse collapse">
          <ul class="nav navbar-nav navbar-right">
            <li><a href=""><strong>About</strong></a></li>
            <li><a href=""><strong>Login</strong></a></li>
            <li><a href=""><strong>Register</strong></a></li>

          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </div>
        <div class="wrapper-page animated fadeInDown">
            <div class="panel panel-color panel-primary">
                <div class="panel-heading"> 
                   <h3 class="text-center m-t-10"> Create a new Account </h3>
                </div> 

                {# error logic #}
                {% if form.errors %}
                {% for field in form %}
                {% for error in field.errors %}
                <div class="alert alert-danger">
                    <strong>{{ error | escape }}</strong>
                </div>
                {% endfor %}
                {% for error in form.non_field_errors %}
                <div class="alert alert-danger">
                    <strong> {{ error | escape }}</strong>
                </div>
                {% endfor %}
                {% endfor %}
                {% endif %}
                {# end error logic #}
                <form class="form-horizontal m-t-40" action="" method="post">
                    {% csrf_token %}

                    {% for field in form %}
                    <div class="form-group">
                        <div class="col-xs-12">
                            <label> {{ field.label }} </label>
                               {{ field|attr:"class:form-control" }}
                        </div>
                    </div>
                    {% endfor %}
                    <div class="form-group ">
                        <div class="col-xs-12">
                            <label class="cr-styled">
                                <input type="checkbox" checked>
                                <i class="fa"></i> 
                                 I accept <strong><a href="#">Terms and Conditions</a></strong>
                            </label>
                        </div>
                    </div>

                    <div class="form-group text-right">
                        <div class="col-xs-12">
                            <button class="btn btn-purple w-md" type="submit">Register</button>
                        </div>
                    </div>

                    <div class="form-group m-t-30">
                        <div class="col-sm-12 text-center">
                            <a href="{% url 'invoice:login' %}">Already have account?</a>
                        </div>
                    </div>
                </form> 

            </div>
        </div>




        <!-- js placed at the end of the document so the pages load faster -->
        <script src="{% static 'login/js/jquery.js' %}"></script>
        <script src="{% static 'login/js/bootstrap.min.js' %}"></script>
        <script src="{% static 'login/js/pace.min.js' %}"></script>
        <script src="{% static 'login/js/wow.min.js' %}"></script>
        <script src="{% static 'login/js/jquery.nicescroll.js' %}" type="text/javascript"></script>


        <!--common script for all pages-->
        <script src="{% static 'login/js/jquery.app.js' %}"></script>

     <hr/>
           <center><h3 class="text text-success"> Jembe&trade; &copy; 2017</h3></center>
    </body>

</html>
您忘记在表单中设置enctype。应该是:

<form class="form-horizontal m-t-40" action="" method="post" enctype="multipart/form-data">
有关更多信息,请参阅上的Django文档

<form class="form-horizontal m-t-40" action="" method="post" enctype="multipart/form-data">