异常值:join()参数必须是str或字节,而不是'dict'

时间:2020-01-30 06:29:00

标签: python-3.x django-templates django-views django-urls django-2.x

我继续在下面出现错误,有人可以给我打电话告诉我我在做什么错吗? settings.py:

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

urls.py:

from django.urls import path
from . import views

path('editar-pessoa/<int:id>', views.editar_pessoa, name='core_editar_pessoa'),

views.py:

def editar_pessoa(request, id):
    pessoa = get_object_or_404(Pessoa, pk=id)
    form = PessoaForm(request.POST or None, instance=pessoa)
    data = {'pessoa':pessoa, 'form':form}

    if request.method == 'POST':
        if form.is_valid():
            form.save()
            return redirect('core_lista_pessoas')
    else:
        return render('core/editar_pessoa.html', data)

editar_pessoa.html(模板):

{% extends 'base.html' %}

{% block content %}

<form action="{% url 'core_editar_pessoa' pessoa.id %}" method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Editar</button>
</form>
{% endblock %}

lista_pessoas.html(带有比索列表的模板):

{% extends 'base.html' %}

{% block content %}

<ul>
{% for pessoa in pessoas %}
    <li>
        <a href="{% url 'core_editar_pessoa' pessoa.id %}">{{ pessoa.nome }}</a>
    </li>
{% endfor %}
{% endblock %}

错误提示:

  File "/home/santos/.local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/santos/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/santos/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/santos/webDeveloper/estacionamento/core/views.py", line 101, in editar_pessoa
    return render('core/editar_pessoa.html', data)
  File "/home/santos/.local/lib/python3.6/site-packages/django/shortcuts.py", line 36, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/home/santos/.local/lib/python3.6/site-packages/django/template/loader.py", line 61, in render_to_string
    template = get_template(template_name, using=using)
  File "/home/santos/.local/lib/python3.6/site-packages/django/template/loader.py", line 15, in get_template
    return engine.get_template(template_name)
  File "/home/santos/.local/lib/python3.6/site-packages/django/template/backends/django.py", line 34, in get_template
    return Template(self.engine.get_template(template_name), self)
  File "/home/santos/.local/lib/python3.6/site-packages/django/template/engine.py", line 143, in get_template
    template, origin = self.find_template(template_name)
  File "/home/santos/.local/lib/python3.6/site-packages/django/template/engine.py", line 125, in find_template
    template = loader.get_template(name, skip=skip)
  File "/home/santos/.local/lib/python3.6/site-packages/django/template/loaders/base.py", line 18, in get_template
    for origin in self.get_template_sources(template_name):
  File "/home/santos/.local/lib/python3.6/site-packages/django/template/loaders/filesystem.py", line 36, in get_template_sources
    name = safe_join(template_dir, template_name)
  File "/home/santos/.local/lib/python3.6/site-packages/django/utils/_os.py", line 32, in safe_join
    final_path = abspath(join(base, *paths))
  File "/usr/lib/python3.6/posixpath.py", line 94, in join
    genericpath._check_arg_types('join', a, *p)
  File "/usr/lib/python3.6/genericpath.py", line 149, in _check_arg_types
    (funcname, s.__class__.__name__)) from None
TypeError: join() argument must be str or bytes, not 'dict'
[30/Jan/2020 03:19:50] "GET /editar-pessoa/3 HTTP/1.1" 500 122769

当我尝试对垃圾系统的CRUD进行更新时遇到了这个问题
我是初学者,所以很抱歉,如果要求不明确,有人可以帮助我吗?

0 个答案:

没有答案