【问题标题】:no module named 'my project name'.context_processors in djangodjango 中没有名为“我的项目名称”的模块。context_processors
【发布时间】:2021-02-25 16:13:36
【问题描述】:

我试图在我的应用程序的每个页面中使用一个表单。该表单位于 base.html 页面中。 这是我的意见。py:

def base_info_form(request):
 if request.method == 'POST':
    form = BaseContactForm(request.POST)
    if form.is_valid():
        form.save()
        return redirect('Help-Page')
    else:
        form = BaseContactForm()
    return render(request, '', {'form': form})


def base_forms(request):
    return {
        'info_form': BaseContactForm()
    }

我将它添加到我的设置中,如下所示:

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            ......
            'Ghoghnoos.context_processors.base_forms',
        ],
    },
},
]

'Ghoghnoos' 是我的项目的名称。该视图是我的博客应用程序视图。 当我刷新浏览器时,我收到此错误: 没有名为“Ghoghnoos.context_processors”的模块 我在这里做错了什么?我以前从未使用过自定义 context_processors。

这是我的 context_processors.py:

def base_info_form(request):
 if request.method == 'POST':
    form = BaseContactForm(request.POST)
    if form.is_valid():
        form.save()
        return redirect('Home-Page')
    else:
        form = BaseContactForm()
    return render(request, '', {'form': form})


def base_forms(request):
    return {       
        'info_form': base_info_form(request)
    }

这是我的 base.html: .......

<form method="post" action="">
  {% csrf_token %}
  {{ info_form }}
</form>

.......

【问题讨论】:

  • 包含您的自定义代码的 py 文件的路径是什么?我怀疑你会想要像 'Ghoghnoos.blog.base_forms.info_form` 或任何适合你的文件结构的东西。
  • 今天的热门问题。 stackoverflow.com/a/66372243/4872140

标签: django django-forms


【解决方案1】:

按照此路径创建您的 base_forms:

Ghoghnoos(project name)
   |...
   |_ _ context_processors.py
   |_ _ settings.py
   |...

Ghoghnoos(项目名称)/context_processors.py:

def base_info_form(request):
 if request.method == 'POST':
    form = BaseContactForm(request.POST)
    if form.is_valid():
        form.save()
        return redirect('Help-Page')
    else:
        form = BaseContactForm()
    return form

def base_forms(request):
    return {         ⬇⬇⬇⬇⬇⬇⬇
        'info_form': base_info_form(request)
    }

【讨论】:

  • 我该如何保存这个表格?
  • @Sam 我编辑了我的答案。实际上你的错误发生在不正确的路径中..
  • 我已完成此操作,但表单不会显示在页面上。它只说“无”。
  • base_info_form 函数中尝试使用return form 而不是return render(request, '', {'form': form})..
  • 然后在你的 html 中获取这个表单:- - - {{info_form}} - - -
猜你喜欢
  • 2014-10-15
  • 2016-12-10
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
相关资源
最近更新 更多