前提・実現したいこと
PythonDjango3超入門という書籍を読みながら、webアプリケーション開発をしようとしています。
Djangoで複数ページの移動を含むサイトが作成できません。
「複数ページの移動」という項目(書籍P.78)で、次の①~③の指示が出ています。
①「templates」フォルダ内の「hello」フォルダにあるindex.htmlを以下のように書き換えてください。
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>{{title}}</title> 6</head> 7<body> 8 <h1>{{title}}</h1> 9 <p>{{msg}}</p> 10 <p><a href="{% url goto %}">{{goto}}</a></p> 11</body> 12</html>
②「hello」フォルダ内のviews.pyを開いて、以下のように書き換えましょう。
python
1from django.shortcuts import render 2from django.http import HttpResponse 3 4def index(request): 5 params = { 6 'title':'Hello/Index', 7 'msg':'これは、サンプルで作ったページです。', 8 'goto':'next', 9 } 10 return render(request, 'hello/index.html', params) 11 12def next(request): 13 params = { 14 'title':'Hello/Next', 15 'msg':'これは、もう1つのページです。' 16 'goto':'index', 17 } 18 return render(request, 'hello/index.html', params)
③「hello」フォルダ内のurls.pyを開いて、urlpatternsの文を以下のように修正しましょう。
python
1from django.urls import path 2from . import views 3 4urlpatterns = [ 5 path('', views.index, name='index'), 6 path('next', views.next, name='next'), 7]
indexは今まで通り/hello/に、nextは/hello/next/にそれぞれ割り当てておきました。
修正したら、実際にhttp://localhost:8000/hello/にアクセスしてみましょう。
最初のページにある「next」をクリックするとnextページに、「index」をクリックするとindexページに移動します。
発生している問題・エラーメッセージ
前述の②を保存したり、python manage.py runserverを実行したりすると、最後数行に
from . import views File "C:\Users\kanae\Desktop\django_app\hello\views.py", line 16 'goto':'index', ^ SyntaxError: invalid syntax
と表示されます。
ちなみに、表示されたエラーメッセージ全体は以下の通りです。
Watching for file changes with StatReloader Performing system checks... Exception in thread django-main-thread: Traceback (most recent call last): File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\threading.py", line 954, in _bootstrap_inner self.run() File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\threading.py", line 892, in run self._target(*self._args, **self._kwargs) File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper fn(*args, **kwargs) File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\core\management\commands\runserver.py", line 117, in inner_run self.check(display_num_errors=True) File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\core\management\base.py", line 392, in check all_issues = self._run_checks( File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\core\management\base.py", line 382, in _run_checks return checks.run_checks(**kwargs) File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\core\checks\registry.py", line 72, in run_checks new_errors = check(app_configs=app_configs) File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config return check_resolver(resolver) File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver return check_method() File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\urls\resolvers.py", line 407, in check for pattern in self.url_patterns: File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\utils\functional.py", line 48, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\urls\resolvers.py", line 588, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\utils\functional.py", line 48, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\urls\resolvers.py", line 581, in urlconf_module return import_module(self.urlconf_name) File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 855, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "C:\Users\kanae\Desktop\django_app\django_app\urls.py", line 20, in <module> path('hello/', include('hello.urls')), File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\site-packages\django\urls\conf.py", line 34, in include urlconf_module = import_module(urlconf_module) File "C:\Users\kanae\AppData\Local\Programs\Python\Python39-32\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 855, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "C:\Users\kanae\Desktop\django_app\hello\urls.py", line 2, in <module> from . import views File "C:\Users\kanae\Desktop\django_app\hello\views.py", line 16 'goto':'index', ^ SyntaxError: invalid syntax
書籍に書いてある内容をそのまま実行したのですが、何が問題なのでしょうか?
試したこと
書籍の正誤表を確認しましたが、該当するページに関する記載はありませんでした。
近いところで躓いた人のブログを見つけましたが、エラーとなった場所が違っていました。
補足情報(FW/ツールのバージョンなど)
WindowsでVScodeを使用しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/06/23 09:10