【问题标题】:Keyword can't be expression - View关键字不能是表达式 - 查看
【发布时间】:2019-10-07 12:12:42
【问题描述】:

我正在尝试使用 Django 创建数据库并将其填入 URL 但我收到此错误:

File "C:\Final\vj_2\vj_2\app_1\views.py", line 12
    'naslov'=naslov,
    ^ SyntaxError: keyword can't be an expression

我不知道我在这里缺少什么以及为什么它不起作用。

这是我的看法:

def dodajClanak(request, naslov, datumObjave, autor):
    clan = Clanak(
        'naslov'=naslov,
        'datumObjave'=datumObjave,
        'autor'=autor
        )
    clan.save()#ako podaci nisu dobri throwat ce error
    return render(request, 'allapp.html', {'data': naslov + ' ' + datumObjave + ' ' + autor})

还有我的模特:

class Clanak(models.Model):
    naslov = models.CharField(null=False, blank=True, max_length=120)
    #naslov = models.DecimalField(null=False, blank=False, decimal_places=1, max_digits=5)
    datumObjave = models.DateField(null=False, blank=False)
    autor = models.CharField(null=False, blank=True, max_length=50)

    def __str__(self):
        return str(self.naslov) + ', ' + str(self.datumObjave) + ', ' + str(self.autor)

完整的错误日志:

线程 django-main-thread 中的异常:Traceback(最近调用 最后):文件 "c:\users\%username%\appdata\local\programs\python\python37-32\Lib\threading.py", 第 917 行,在 _bootstrap_inner self.run() 文件 "c:\users\%username%\appdata\local\programs\python\python37-32\Lib\threading.py", 第 865 行,运行中 self._target(*self._args, **self._kwargs) 文件 "C:\Final\vj_2\venv\lib\site-packages\django\utils\autoreload.py", 第 54 行,在包装器中 fn(*args, **kwargs) 文件 "C:\Final\vj_2\venv\lib\site-packages\django\core\management\commands\runserver.py", 第 117 行,inner_run self.check(display_num_errors=True) 文件 "C:\Final\vj_2\venv\lib\site-packages\django\core\management\base.py", 第 390 行,检查中 include_deployment_checks=include_deployment_checks,文件“C:\Final\vj_2\venv\lib\site-packages\django\core\management\base.py”, 第 377 行,在 _run_checks 返回 checks.run_checks(**kwargs) 文件 "C:\Final\vj_2\venv\lib\site-packages\django\core\checks\registry.py", 第 72 行,在 run_checks 中 new_errors = check(app_configs=app_configs) 文件 "C:\Final\vj_2\venv\lib\site-packages\django\core\checks\urls.py", 第 13 行,在 check_url_config 中 返回 check_resolver(resolver) 文件 "C:\Final\vj_2\venv\lib\site-packages\django\core\checks\urls.py", 第 23 行,在 check_resolver 中 返回 check_method() 文件“C:\Final\vj_2\venv\lib\site-packages\django\urls\resolvers.py”,行 398,检查中 对于 self.url_patterns 中的模式:文件“C:\Final\vj_2\venv\lib\site-packages\django\utils\functional.py”, 第 80 行,在 get res = instance.dict[self.name] = self.func(instance) File "C:\Final\vj_2\venv\lib\site-packages\django\urls\resolvers.py",线 第579章 模式= getattr(self.urlconf_module,“urlpatterns”,self.urlconf_module)文件 "C:\Final\vj_2\venv\lib\site-packages\django\utils\functional.py", 第 80 行,在 get res = instance.dict[self.name] = self.func(instance) File "C:\Final\vj_2\venv\lib\site-packages\django\urls\resolvers.py",线 572,在 urlconf_module 中 返回 import_module(self.urlconf_name) 文件“C:\Final\vj_2\venv\lib\importlib__init__.py”,第 127 行,在 导入模块 return _bootstrap._gcd_import(name[level:], package, level) File "", line 1006, in _gcd_import File "",第 983 行,在 _find_and_load 文件中 "",第 967 行,在 _find_and_load_unlocked 文件“”,第 677 行,在 _load_unlocked
文件“”,第 728 行,在 exec_module 文件“”,第 219 行,在 _call_with_frames_removed 文件“C:\Final\vj_2\vj_2\vj_2\urls.py”,第 18 行,在 从 app_1 导入视图文件“C:\Final\vj_2\vj_2\app_1\views.py”,第 12 行 “纳斯洛夫”=纳斯洛夫, ^ SyntaxError: 关键字不能是表达式

urls.py

from django.contrib import admin
from django.urls import path, re_path
from app_1 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('home/', views.home),
    re_path('add/(?P<naslov>[a-zA-Z]+/(?P<datumObjave>[0-9]+)/(?P<autor>[a-zA-Z]+', views.dodajClanak),
]

【问题讨论】:

  • 'datum_objave' --> datumObjave ?
  • @Rakesh 我解决了这个问题,但在“Naslov”上仍然出现同样的错误
  • 你能发布你的完整错误吗?
  • @Rakesh 我发布了完整的错误日志
  • @justStarting 显示您的网址代码

标签: python django django-views


【解决方案1】:

试试下面的代码:

# views.py
def dodajClanak(request, naslov, datumObjave, autor):
    Clanak.objects.create(
        naslov=naslov,
        datumObjave=datumObjave,
        autor=autor
    )
    return render(request, 'allapp.html', {'data': f'{naslov} {datumObjave} {autor}'})

# urls.py
from django.contrib import admin
from django.urls import path, re_path
from app_1 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('home/', views.home),
    re_path('add/(?P<naslov>[a-zA-Z]+)/(?P<datumObjave>[-/0-9]+)/(?P<autor>[a-zA-Z]+)/', views.dodajClanak),
]

【讨论】:

  • 它工作正常,至少服务器正在运行,我现在必须测试插入数据库。你能告诉我我们在这里做什么吗?谢谢。你知道我应该用什么替换日期格式的“(?P[-/0-9]+)”吗?
  • datumObjave 可以是 '2019-05-21' 或 '2019/05/21'
  • 现在我得到:“没有这样的表:app_1_clanak”错误
  • 也许你应该先运行python manage.py makemigrations &amp;&amp; python manage.py migrate
【解决方案2】:
def dodajClanak(request, naslov, datumObjave, autor):
clan = Clanak(
    'naslov':naslov,
    'datumObjave':datumObjave,
    'autor':autor
    )
clan.save()#ako podaci nisu dobri throwat ce error
context ={
    data:"naslov + ' ' + datumObjave + ' ' + autor"
}
return render(request, 'allapp.html', context)

'datum_objave'==>datumObjave

【讨论】:

  • 我已经通过@Rakesh 的建议修复了这个问题,但错误仍然是一样的。
【解决方案3】:
def dodajClanak(request, naslov, datumObjave, autor):
    clan = Clanak(
        'naslov':naslov,
        'datum_objave':datumObjave,
        'autor':autor
        )
    clan.save()#ako podaci nisu dobri throwat ce error
    return render(request, 'allapp.html', {'data': naslov + ' ' + datumObjave + ' ' + autor})

【讨论】:

    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2020-02-10
    • 1970-01-01
    • 2016-09-26
    • 2012-05-19
    相关资源
    最近更新 更多