演習課題「記事の投稿時に、ログインユーザー名を使う」
右の環境には、「myblog」プロジェクトに「news」というアプリケーションが作成してあります。
この「news」アプリケーションの新規投稿時に、ログインユーザー名を使うように、views.pyを修正してください。この時、記事の投稿フォームでも、投稿者名を非表示にしてください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
#09:ログインユーザー名を、作成・編集に使おう
ここでは、新しいお店を追加する場合、自動的にログインユーザー名で情報を登録します。これまでは、投稿者名を自由に変更できましたが、今回は、ログインしているユーザー名で自動的に格納するようにしましょう。
Username: admin
Password: paizaadmin
Username: paiza
Password: paiza
Username: kirisima
Password: kirisima
1. 管理サイトにログインする
2. 「Users」をクリック
3. パスワードを変更したいユーザー名をクリック
4. 「Change user」-「Password」にある、'Raw passwords are not stored, so there is no way to see this user's password, but you can change the password using this form.'の最後にあるリンクをクリック
5. 「Change password」フォームに新しいパスワードを入力
6. 「CHANGE PASSWORD」ボタンをクリック
myapp/lunchmap/views.pyclass CreateView(LoginRequiredMixin, generic.edit.CreateView):
model = Shop
fields = ['name', 'address', 'category'] # '__all__'
def form_valid(self, form):
form.instance.author = self.request.user
return super(CreateView, self).form_valid(form)
myapp/lunchmap/views.pyfrom django.urls import reverse_lazy
from django.views import generic
from .models import Category, Shop
from django.contrib.auth.mixins import LoginRequiredMixin
from django.core.exceptions import PermissionDenied
myapp/lunchmap/views.pyclass UpdateView(LoginRequiredMixin, generic.edit.UpdateView):
model = Shop
fields = ['name', 'address', 'category'] # '__all__'
def dispatch(self, request, *args, **kwargs):
obj = self.get_object()
if obj.author != self.request.user:
raise PermissionDenied('You do not have permission to edit.')
return super(UpdateView, self).dispatch(request, *args, **kwargs)
Django2 でユーザー認証(ログイン認証)を実装するチュートリアル -3- ブログアプリへの実装 | ITエンジニアラボ
https://it-engineer-lab.com/archives/737
Pythonの可変長引数(args, *kwargs)の使い方 | note.nkmk.me
https://note.nkmk.me/python-args-kwargs-usage/
Python超入門(番外1):arg と *kwarg
http://iatlex.com/python/arg_kwargs
Django でのユーザー認証
https://docs.djangoproject.com/ja/2.0/topics/auth/