2017-03-29 13 views
0

登録にクラスベースのビューを使用しようとしましたが、フォームフィールドに画像を追加しようとしましたが、このフィールドを取得し続けると画像ファイルに問題があります これはforms.pyファイル `cbvとAbstractUserモデルの画像エラーでdjangoを登録

from django import forms 
from .models import User 



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

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

` と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ファイル

あなたの形式で enctypeを設定し忘れていた
`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> 

答えて

1

。それは次のようになります。

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

は、より多くの情報のためfile uploadsにDjangoのドキュメントを参照してください。

+0

ありがとうございましたAlasdair ....私は完全にその部分を忘れてしまった – Julipels