我正在尝试创建一个上传字段,人们可以在其中上传自己的简历/简历。 当我点击“提交”按钮时,出现以下错误:

    Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.5/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "/usr/local/src/project/views.py", line 160, in careersView
    applicant_cv = applyModel(cv = request.FILES.get['cv'])
TypeError: 'method' object is not subscriptable

我正在使用以下配置(Django 1.11,使用内置网络服务器进行测试,已启用调试):

型号

from django.db import models

class applyModel(models.Model) :
    cv = models.FileField(upload_to='cvs/')

Forms.py

from django import forms
from django.forms import ModelForm
from .models import applyModel

class applyForm(forms.Form) :
    name = forms.CharField(label="", required=True, max_length=50, widget=forms.TextInput(attrs={'placeholder': 'Your Name', 'class': 'name'}))
    email = forms.EmailField(label="", required=True, max_length=100, widget=forms.EmailInput(attrs={'placeholder': 'E-mail Address', 'class': 'email'}))
    phone = forms.CharField(label="", required=False, max_length=20, widget=forms.NumberInput(attrs={'placeholder': 'Phone Number', 'class': 'phone'}))
    linkedin = forms.CharField(label="", required=True, max_length=100, widget=forms.TextInput(attrs={'placeholder': 'LinkedIn / Professional Website', 'class': 'linkedin'}))
    portfolio = forms.CharField(label="", required=False, max_length=100, widget=forms.TextInput(attrs={'placeholder': 'Portfolio', 'class': 'portfolio'}))
    hours = forms.CharField(label="", required=True, max_length=10, widget=forms.NumberInput(attrs={'placeholder': 'Hours Available Per Week', 'class': 'hours'}))
    startDate = forms.CharField(label="", required=True, max_length=10, widget=forms.TextInput(attrs={'placeholder': 'Earliest Start Date', 'class': 'startDate'}))
    message = forms.CharField(label="", max_length=900, widget=forms.Textarea(attrs={'placeholder': 'Provide your motivation for this role (max five sentences)', 'class': 'message'}))
    position = forms.CharField(label="", max_length=900, widget=forms.Textarea(attrs={'placeholder': 'Message', 'class': 'position'}))
    cv = forms.FileField(label="Upload CV/Resume")

Views.py

from .forms import applyForm
from .models import applyModel


@csrf_exempt
def careersView(request):
    if request.method == "POST" :
        form = applyForm(request.POST, request.FILES)
        if form.is_valid():
            name = request.POST.get('name')
            email = request.POST.get('email')
            phone = request.POST.get("phone")
            linkedin = request.POST.get("linkedin")
            hours = request.POST.get("hours")
            startDate = request.POST.get("startDate")
            message = request.POST.get("message")
            position = request.POST.get("position")
            portfolio = request.POST.get("portfolio")
            applicant_cv = applyModel(cv = request.FILES.get['cv'])
            cv_filename = applyModel.objects.get()
            cv_filename = cv_filename.cv.name
            return render(request, '/careers/careers_template.html', {'form': form})
    else :
        form = applyForm()
    return render(request, '/careers/careers_template.html', {'form': form})

Settings.py

  I've added this template: 'django.template.context_processors.media',
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
    MEDIA_URL = '/media/'
    And yes, I have the following line in my urls.conf: 
    + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

HTML文件

   <form action="" method="post" enctype="multipart/form-data">
      <div class="closeBtn"><img src="{% static 'img/svgs/icon-close-sm-dark.svg'%}"/></div>
      <div class="icon">
        <img src=""/>
      </div>
      <h1>Application for: </br> </br> <span class="title"></span> <span class="hours"></span></h1>
      {{ form }}
      <input class="hvr-bob submitBtn" type="submit" name "contact" value="Send Message" />
      <div class="success">
        <p><svg class="checkmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52"><circle class="checkmark__circle" cx="26" cy="26" r="25" fill="none"/><path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/></svg> </br> <span>Thank you for applying!</span>  </br> We will be in touch shortly.</p>
      </div>
    </form>

#1楼 票数:2

您正在调用方括号中的get方法,请尝试以下方法:

applicant_cv = applyModel(cv = request.FILES.get('cv'))

  ask by Erik N translate from so

未解决问题?本站智能推荐:

2回复

django模型表格

我有一个非常简单的模型形式,但是由于某种原因,代码无法同步数据库并引发错误:AttributeError:'module'对象没有属性'CharField' 代码如下(在我的models.py中): dpasted代码位于: http ://dpaste.com/607823/ 我想
1回复

django上传文件(模型和表格)

我与django一起进行小组项目。 我的文件上传有问题。 它是一个Web应用程序,用于创建,共享带有一些其他选项(图形,图表等)的表单。 我应该提到我是django的新手(总初学者) 1.models.py : 2. Forms.py: 3.当然,我进行了迁移,更改了主要设置(
3回复

django覆盖模型save()方法

我想在save()方法中获取request作为参数。 models.py forms.py views.py 而不是值2我想传递request.user 。 我该怎么做。 如果问题不正确,有人请更正问题。
2回复

Django-分别打印每个模型/表格

我使用{{form}}打印出整个表格。 我想知道有什么方法可以分别打印每个元素吗? 我尝试了{{survey.location}}或{{survey.get_location_display}},但是它不起作用。 以下是mays.py,forms.py,views.py和home.html
2回复

Django-“用户”对象不可迭代

当我在上下文中传递instance1 ,它给出的错误'User' object is not iterable 。 我想在pk模板中显示名称。 示例http://localhost:8000/users/15/profile-update/ pk=15
1回复

使用Django模型表格选择有效选择

我正进入(状态 尝试使用AJAX分配外键字段选项时出现错误。 我的代码领域就是这样。 在我的Javascript函数中,我正在做的是 但这给了我一个无效的选择选项。 请告诉我我在哪里做错了。 或将有效选项附加到外键字段的正确方法是什么? 帮助将不胜感激 编辑:问题是分配
1回复

Django:“'Blogmodel'对象不可迭代”

我有错误“Blogmodel”对象不可迭代我的查看.py 网址.py html文件 当我尝试不使用 for 循环时它正在工作,原因是什么?
2回复

如何在django模板中调用模型的方法?

我在 Models.py 中有 Invoicetracker 的模型,我想在模板中调用模型的方法。 视图.py 我想在 order.html 模板中调用方法 totalbill 和 totalpaid。 我可以通过实例方法调用它吗? 或者我们应该使用类方法吗?