TypeError:join()参数必须是str或bytes,而不是'dict'

2024-10-02 14:26:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图上传数据从一个CSV文件到一个数据库,直接从HTML。你知道吗

联系人_上传.HTML你知道吗

{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block body %}
{{order}}
<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <label>Upload a file</label>
    <input type="file" name="file">
    <p>csv files only</p>
    <button type="submit">upload</button>
</form>
{% endblock %}

你知道吗视图.PY你知道吗

@permission_required('admin.can_add_log_entry')
def contact_upload(request):
    #template = "contact_upload.html"
    prompt = {
        'order': 'Order of the CSV should be username, email, password1, password2'
    }
    if request.method == "GET":
        return render(request, prompt)
    csv_file = request.FILES['file']
    if not csv_file.name.endswith('.csv'):
        messages.error(request, 'This is not a csv file')

    data_set = csv_file.read().decode('UTF-8')
    io_string = io.StringIO(data_set)
    next(io_string)
    for column in csv.reader(io_string, delimiter=',', quotechar="|"):
        _, created = Contact.objects.update_or_create(
            username=column[0],
            email=column[1],
            password1=column[2],
            password2=column[3]
        )
    context = {}
    return render(request, 'officers/contact_upload.html', context)

你知道吗网址.PY你知道吗

from officers import views as officer_views
from inventory import views as inventory_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('inventory.urls')),
    path('register/', officer_views.register, name='register'),
    path('contact_upload/', officer_views.contact_upload, name='contact_upload'),
    path('laptops/', inventory_views.laptops, name='laptops'),
    path('desktops/', inventory_views.desktops, name='desktops'),
    path('mobiles/', inventory_views.mobiles, name='mobiles'),

    path('profile/', officer_views.profile, name='profile'),
    path('login/', auth_views.LoginView.as_view(template_name='officers/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='officers/logout.html'), name='logout'),

]

错误

Internal Server Error: /contact_upload/
Traceback (most recent call last):
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\core\handlers\
exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\core\handlers\
base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\core\handlers\
base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\contrib\auth\d
ecorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\inventoryManagement\officers\views.py", line
 34, in contact_upload
    return render(request, prompt)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\shortcuts.py",
 line 19, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\template\loade
r.py", line 61, in render_to_string
    template = get_template(template_name, using=using)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\template\loade
r.py", line 15, in get_template
    return engine.get_template(template_name)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\template\backe
nds\django.py", line 34, in get_template
    return Template(self.engine.get_template(template_name), self)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\template\engin
e.py", line 143, in get_template
    template, origin = self.find_template(template_name)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\template\engin
e.py", line 125, in find_template
    template = loader.get_template(name, skip=skip)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\template\loade
rs\base.py", line 18, in get_template
    for origin in self.get_template_sources(template_name):
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\template\loade
rs\filesystem.py", line 36, in get_template_sources
    name = safe_join(template_dir, template_name)
  File "C:\Users\Leah Adongo\PycharmProjects\inventory_management\venv\lib\site-packages\django\utils\_os.py",
 line 17, in safe_join
    final_path = abspath(join(base, *paths))
  File "C:\Users\Leah Adongo\AppData\Local\Programs\Python\Python37-32\lib\ntpath.py", line 115, in join
    genericpath._check_arg_types('join', path, *paths)
  File "C:\Users\Leah Adongo\AppData\Local\Programs\Python\Python37-32\lib\genericpath.py", line 149, in _chec
k_arg_types
    (funcname, s.__class__.__name__)) from None
TypeError: join() argument must be str or bytes, not 'dict'
[03/Jan/2020 09:32:28] "GET /contact_upload/ HTTP/1.1" 500 131569

Tags: djangonameinpyliblinesitetemplate