質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3885閲覧

Django administrationでnot definedエラーが出てしまいます。

beginner-m

総合スコア11

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/07/10 08:35

プログラミング初心者です。
Python Django 超入門という参考書を読みながら学習をしているのですが、
サーバーにname 'public_user' is not definedというエラーで躓いてしまっております。

発生している問題・エラーメッセージ

name 'public_user' is not defined

該当のソースコード

【views.py】

from django.shortcuts import render from django.shortcuts import redirect from django.contrib.auth.models import User from django.contrib import messages from .models import Message,Friend,Group,Good from .forms import GroupCheckForm,GroupSelectForm,SearchForm,FriendsForm,CreateGroupForm,PostForm from django.db.models import Q from django.contrib.auth.decorators import login_required @login_required(login_url='/admin/login/') def index(request): (public_user, public_group) = get_public() if request.method == 'POST': if request.POST['mode'] == '__check_form__': searchform = SearchForm() checkform = GroupCheckForm(request.user,request.POST) glist = [] for item in request.POST.getlist('groups'): glist.append(item) messages = get_your_group_message(request.user,glist, None) if request.POST['mode'] == '__search_form__': searchform = SearchForm(request.POST) checkform = GroupCheckForm(request.user) gps = Group.objects.filter(owner=request.user) glist = [public_group] for item in gps: glist.append(item) messages = get_your_group_message(request.user, glist, request.POST['search']) else: searchform = SearchForm() checkform = GroupCheckForm(request.user) gps = Group.objects.filter(owner=request.user) glist = [public_group] for item in gps: glist.append(item) messages = get_your_group_message(request.user, glist, None) params = { 'login_user':request.user, 'contents':messages, 'check_form':checkform, 'search_form':searchform, } return render(request, 'sns/index.html', params) @login_required(login_url='/admin/login/') def groups(request): friends = Friend.objects.filter(owner=request.user) if request.method == 'POST': if request.POST['mode'] == '__groups_form__': sel_group = request.POST['groups'] gp = Group.objects.filter(owner=request.user).filter(title=sel_group).first() fds = Friend.objects.filter(owner=request.user).filter(group=gp) vlist = [] for item in fds: vlist.append(item.user.username) groupsform = GroupSelectForm(request.user,request.POST) friendsform = FriendsForm(request.user,friends=friends, vals=vlist) if request.POST['mode'] == '__friends_form__': sel_group = request.POST['group'] group_obj = Group.objects.filter(title=sel_group).first() sel_fds = request.POST.getlist('friends') sel_users = User.objects.filter(username__in=sel_fds) fds = Friend.objects.filter(owner=request.user).filter(user__in=sel_users) vlist = [] for item in fds: item.group = group_obj item.save() vlist.append(item.user.username) messages.success(request, 'チェックされたFriendを'+ sel_group + 'に登録しました。') groupsform = GroupSelectForm(request.user,{'groups':sel_group}) friendsform = FriendsForm(request.user,friends=friends, vals=vlist) else: groupsform = GroupSelectForm(request.user) friendsform = FriendsForm(request.user,friends=friends,vals=[]) sel_group = '-' createform = CreateGroupForm() params = { 'login_user':request.user, 'groups_form':groupsform, 'friends_form':friendsform, 'create_form':createform, 'group':sel_group, } return render(request, 'sns/groups.html', params) @login_required(login_url='/admin/login/') def add(request): add_name = request.GET['name'] add_user = User.objects.filter(username=add_name).first() if add_user == request.user: messages.info(request, "自分自身をFriendにすることはできません。") return redirect(to='/sns') (public_user,public_group) = get_public() #add_userのFriendの数を調べる frd_num = Friend.objects.filter(owner=request.user).filter(user=add_user).count() if frd_num > 0: messages.info(request, add_user.username + 'は既に追加されています。') return redirect(to='/sns') frd = Friend() frd.owner = request.user frd.user = add_user frd.group = public_group frd.save() messages.success(request, add_user.username + 'を追加しました!groupページに移動して、追加したFriendをメンバーに設定してください。') return redirect(to='/sns') @login_required(login_url='/admin/login/') def creategroup(request): #Groupを作り、Userとtitleを設定して保存する gp = Group() gp.owner = request.user gp.title = request.POST['group_name'] gp.save() messages.info(request, '新しいグループを作成しました。') return redirect(to='/sns/groups') @login_required(login_url='/admin/login/') def post(request): if request.method == 'POST': gr_name = request.POST['groups'] content = request.POST['content'] group = Group.objects.filter(owner=request.user).filter(title=gr_name).first() if group == None: (pub_user,group) = get_public() msg = Message() msg.owner = request.user msg.group = group msg.content = content msg.save() messages.success(request, '新しいメッセージを投稿しました!') return redirect(to='/sns') else: form = PostForm(request.user) params = { 'login_user':request.user, 'form':form, } return render(request, 'sns/post.html', params) @login_required(login_url='/admin/login/') def share(request, share_id): share = Message.objects.get(id=share_id) if request.method == 'POST': gr_name = request.POST['groups'] content = request.POST['content'] group = Group.objects.filter(owner=request.user).filter(title=gr_name).first() if group == None: (pub_user, group) = get_public() msg = Message() msg.owner = request.user msg.group = group msg.content = content msg.share_id = share.id msg.save() share_msg = msg.get_share() share_msg.share_count += 1 share_msg.save() messages.success(request, 'メッセージをシェアしました!') return redirect(to='/sns') form = PostForm(request.user) params = { 'login_user':request.usre, 'form':form, 'share':share, } return render(request, 'sns/share.html',params) @login_required(login_url='/admin/login/') def good(request,good_id): good_msg = Message.objects.get(id=good_id) is_good = Good.objects.filter(owner=request.user).filter(message=good_msg).count() if is_good > 0: messages.success(request, '既にメッセージにはGoodしています。') return redirect(to='/sns') good_msg.good_count +=1 good_msg.save() good = Good() good.owner = request.user good.message = good_msg good.save() messages.success(request, 'メッセージにGoodしました!') return redirect(to='/sns') def get_your_group_message(owner, glist, find): (public_usre,public_group) = get_public() groups = Group.objects.filter(Q(owner=owner)|Q(owner=public_user)).filter(title__in=glist) me_friends = Friend.objects.filter(group__in=groups) me_users = [] for f in me_friends: me_users.append(f.user) his_groups = Group.objects.filter(owner__in=me_users) his_friends = Friend.objects.filter(user=owner).filter(group__in=his_groups) me_groups = [] for hf in his_friends: me_groups.append(hf.group) if find==None: messages = Message.objects.filter(Q(group__in=groups)|Q(group__in=me_groups))[:100] else: messages = Message.objects.filter(Q(group__in=groups)|Q(group__in=me_groups)).filte(content__contains=find)[:100] return messages def get_public(): public_user = User.objects.filter(username='public').first() public_group = Group.objects.filter(owner=public_user).first() return (public_user, public_group)

補足情報(FW/ツールのバージョンなど)

python 3.7
Django version 2.2.3

参考書のサンプル通りに書いているつもりなのですが、
エラーが出てしまっている為、ご教授いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

djangoもpythonも専門外ですが、

python

1 (public_usre,public_group) = get_public() 2 groups = Group.objects.filter(Q(owner=owner)|Q(owner=public_user)).filter(title__in=glist)

ここではないですか?
最初に public_usre とスペルミスしてるので次の行の owner=public_user で未定義エラーになってるんじゃないでしょうか。

投稿2019/07/10 09:30

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

beginner-m

2019/07/11 00:27

解決いたしました! ご指摘ありがとうございます!
退会済みユーザー

退会済みユーザー

2019/07/11 05:27 編集

あのー、ベストアンサーは付けて頂けないんでしょうか?
beginner-m

2019/07/13 03:08

失念しておりました汗 ありがとうございました!
退会済みユーザー

退会済みユーザー

2019/07/13 09:34

お、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問