前提・実現したいこと
基本的な概念や記述方法など理解していない部分が多いです。
今は参考書内容をそのままコピー、そこから一部変更を加えてみる。というやり方でやっています。
今回は以下のサイトのスケジューラを参考にさせて頂いています。
https://blog.narito.ninja/detail/11/
そこで、基本となるページ(サイトの内容+別ページなど)は作成できたのですが、複数人で使用することを想定して
/mycalendar/user1/、/mycalendar/user2/と個別のページを作りたいです。
ログインなどのページは考えず、そのアドレスに直接アクセスすれば使用できることを目指しています。(Aさんはuser1のアドレスを使用してくださいとあらかじめ決める)
発生している問題・エラーメッセージ
■現状
1.url.py で想定されるURL構成を記述
2.mixins.py でurlの<user>パラメータを取得してcontextとして送信
3.Htmlのアクセス先urlにcontextの<user>を追記することでサイトの移動ができる
(ページを読み込んだ時点で、そのサイトに書かれた移動先のurlを/calendar/user1 になるように予め指定してしまう)
のような動きを想定していましたが
~~mixins.py の<user>をprintで表示すると、user1 として表示されるのに対して
アクセス先のurlには、mycalendar/user1/%7B%25%20url%20'mycalendar'%20%25%20user%3Duser1%20%7D
と不要な部分が表示されてしまい、結果ページが見つかりません。とエラーになります。
~~
~~
基本のページ(/mycalendar/)にはアクセス可能ですが、ページを移動するたびに
url(%7B%25%20url%20'mycalendar'%20%25%20user%3Duser1%20%7Dのような部分)がどんどん長くなり、アクセスできなくなります。
※これは不要な部分を<user>だと勘違いして取得してしまっているのかなと思っていますが、結局解決方法が分かりません。
~~
(おかしな状態で保存されていたようで、バックアップの内容と入れ替えると正常になりました。)
最初にアクセスした際、<user>が存在しません。とエラーになります。
回避策などあれば教えて頂きたいです。
該当のソースコード
url.py
app_name = 'app' urlpatterns = [ path('mycalendar/', views.MyCalendar.as_view(), name='mycalendar'), path('mycalendar/<str:user>/', views.MyCalendar.as_view(), name='mycalendar'), path('mycalendar/<int:year>/<int:month>/<int:day>/', views.MyCalendar.as_view(), name='mycalendar'), path('mycalendar/<str:user>/<int:year>/<int:month>/<int:day>/', views.MyCalendar.as_view(), name='mycalendar'), ]
mixins.py
def get_month_calendar(self): user_adr = self.kwargs.get('user') print(user_adr) month_adr = self.kwargs.get('month') year_adr = self.kwargs.get('year') day_adr = self.kwargs.get('day') #print(year_adr,month_adr,day_adr) if month_adr and year_adr and day_adr: now_weekday = datetime.date(year_adr, month_adr, day_adr).weekday() today = datetime.date(year_adr,month_adr,day_adr) else: now_weekday = datetime.date.today().weekday() year_adr = datetime.date.today().year month_adr = datetime.date.today().month day_adr = datetime.date.today().day today = datetime.date.today() #print("MonthCalendarMixin Start") """月間カレンダー情報の入った辞書を返す""" self.setup_calendar() current_month = self.get_current_month() calendar_data = { 'now': today, 'month_days': self.get_month_days(current_month), 'month_current': current_month, 'month_previous': self.get_previous_month(current_month), 'month_next': self.get_next_month(current_month), 'week_names': self.get_week_names(), 'user':user_adr, } #print("MonthCalendarMixin End") return calendar_data
html
<a class="nav-content" href="{% url 'mycalendar' user = {{user}} % }">Month</a>
試したこと
htmlの追加パラメータの書き方には、
href="{% url 'mycalendar' user = {{user}} % }
href="{% url 'mycalendar' {{user}} % }
などあるようですが、どちらも想定した動作が出来ませんでした。
また、mixins.py(Viwes.py)に
def detail(request, question_id): context = {'question_id': question_id} return render(request, 'polls/detail.html', context)
のように関数を書くと紹介されていましたが、classごとに分けて作成しているとき
どこをどのように変更・追加すればよいのか分かりませんでした。
かれこれ2週間ほど悩んでいます。
ユーザーごとに1枚ずつページを作ろうとも思いましたが
Views.pyやmixins.pyもユーザーごとに量産することを考えると効率的ではないと思い
かといって、どのように変更すればよいかもイマイチ理解できていません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/30 02:15
2020/07/30 02:15
2020/07/30 02:26 編集
2020/07/30 04:21