gpt4 book ai didi

python - raise TypeError('在 include() 的情况下, View 必须是可调用的或列表/元组

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:36 25 4
gpt4 key购买 nike

我对 python 和 django 相当陌生。我确实知道这个错误表明什么。它说我需要将 View 导入到网址中。奇怪的是,在我的笔记本电脑上它运行良好并加载页面,但在我的台式机上却不然。我正在使用 git 存储库,并且刚刚从我的笔记本电脑中提取了工作更改。我在两台机器上使用相同的 Python 解释器 (3.5.3)。对于所有 url,我都收到与标题所述相同的错误消息。

这是完整的堆栈

Unhandled exception in thread started by <function check_errors.

<locals>.wrapper at 0x000001FA9FAB7400>
Traceback (most recent call last):
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\core\management\commands\runserver.py", line 121, in inner_run
self.check(display_num_errors=True)
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\core\management\base.py", line 374, in check
include_deployment_checks=include_deployment_checks,
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\core\management\base.py", line 361, in _run_checks
return checks.run_checks(**kwargs)
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\core\checks\registry.py", line 81, in run_checks
new_errors = check(app_configs=app_configs)
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\core\checks\urls.py", line 14, in check_url_config
return check_resolver(resolver)
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\core\checks\urls.py", line 24, in check_resolver
for pattern in resolver.url_patterns:
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\utils\functional.py", line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\urls\resolvers.py", line 313, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\utils\functional.py", line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\urls\resolvers.py", line 306, in urlconf_module
return import_module(self.urlconf_name)
File "C:\Python35\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 673, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "C:\Users\Rpg Legend\PycharmProjects\matchmaker\src\matchmaker\urls.py", line 9, in <module>
url(r'^$', 'newsletter.views.home', name='home'),
File "C:\Users\Rpg Legend\mm\lib\site-packages\django\conf\urls\__init__.py", line 85, in url
raise TypeError('view must be a callable or a list/tuple in the case of include().')
TypeError: view must be a callable or a list/tuple in the case of include().

ma​​tchmaker(project/main)/urls.py:

from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin

urlpatterns = [
url(r'^$', 'newsletter.views.home', name='home'),
url(r'^contact/$', 'newsletter.views.contact', name='contact'),
url(r'^question/$', 'questions.views.home', name='question_home'),
url(r'^about/$', 'matchmaker.views.about', name='about'),
]

新闻通讯/views.py

from django.conf import settings
from django.core.mail import send_mail
from django.shortcuts import render
from questions.models import Question

from .forms import ContactForm, SignUpForm


# Create your views here.
def home(request):
title = 'Sign Up Now'
form = SignUpForm(request.POST or None)
context = {
"title": title,
"form": form
}


def contact(request):
title = 'Contact Us'
title_align_center = True
form = ContactForm(request.POST or None)

if form.is_valid():
form_email = form.cleaned_data.get("email")
form_message = form.cleaned_data.get("message")
form_full_name = form.cleaned_data.get("full_name")
subject = 'Site contact form'
from_email = settings.EMAIL_HOST_USER
to_email = [from_email, 'youotheremail@email.com']
contact_message = "%s: %s via %s" % (
form_full_name,
form_message,
form_email)
some_html_message = """
<h1>hello</h1>
"""

send_mail(subject,
contact_message,
from_email,
to_email,
html_message=some_html_message,
fail_silently=True)

context = {
"form": form,
"title": title,
"title_align_center": title_align_center,
}
return render(request, "forms.html", context)

ma​​tchmaker/views.py

from django.shortcuts import render

def about(request):
return render(request, "about.html", {})

我希望得到一点帮助或指导。每当我做这样的事情时:

from app_name import views 
from newsletter.views import home, contact

Pycharm 将其显示为灰色,并表示这是一个未使用的导入语句。在我参与的其他几个项目中,我不需要将任何 View 导入到 main/project urls.py 中。

最佳答案

您已根据需要将 View 导入到您的网址,但您错过了在网址模式中使用 View 而不是点线字符串路径的下一步

from newsletter.views import home, contact

urlpatterns = [
url(r'^$', home, name='home'),
url(r'^contact/$', contact, name='contact'),
...
]

一旦您在 url 模式中使用 View ,PyCharm 不应再将其标记为未使用的导入。

Django 1.10 中删除了对点字符串路径的支持。如果您的代码在一台机器上运行但在另一台机器上运行不正常,那么听起来您正在运行两个不同版本的 Django。尝试在所有计算机上安装相同的软件包版本以避免此类问题非常重要。如果您还没有了解 pip freeze 和要求文件,请了解一下 ( try this article )。

关于python - raise TypeError('在 include() 的情况下, View 必须是可调用的或列表/元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42713105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com