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

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

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

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

Python

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

Q&A

解決済

2回答

1371閲覧

Python Django 超入門 のサンプルが動きません(ミニSNS)

omocchi

総合スコア12

Django

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

Python

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

0グッド

0クリップ

投稿2019/12/03 03:05

編集2019/12/03 13:42

python jango 超入門 という参考書にあるミニSNSを作っているのですが、このエラーが出てきてしまい、調べても解決できません。
イメージ説明

python

1from django.shortcuts import render 2from django.shortcuts import redirect 3from django.contrib.auth.models import User 4from django.contrib import messages 5 6from .models import Message,Friend,Group,Good 7from .forms import GroupCheckForm,GroupSelectForm, \ 8 SearchForm,FriendsForm,CreateGroupForm,PostForm 9 10from django.db.models import Q 11from django.contrib.auth.decorators import login_required 12 13#indexのビュー関数 14@login_required(login_url='/admin/login/') 15def index(request): 16 #publicのuserを取得 17 (public_user, public_group) = get_public() 18 19 #POST送信時の処理 20 if request.method == 'POST': 21 22 #Groupのチェックを更新した時の処理 23 if request.POST['mode'] == '__check_form__': 24 #フォームの用意 25 searchform = SearchForm() 26 checkform = GroupCheckForm(request.user, request.POST) 27 #チェックされたGroup名をリストにする 28 glist = [] 29 for item in request.POST.getlist('groups'): 30 glist.append(item) 31 #Messageの取得 32 messages = get_your_group_message(request.user, \ 33 glist, None) 34 35 if request.POST['mode'] == '__search_form__': 36 #フォームの用意 37 searchform = SearchForm(request.POST) 38 checkform = GroupCheckForm(request.user) 39 #Groupのリストを取得 40 gps = Group.objects.filter(owner=request.user) 41 glist = [public_group] 42 for item in gps: 43 glist.append(item) 44 #メッセージ取得 45 messages = get_your_group_message(request.user, glist, \ 46 request.POST['search']) 47 #GETアクセス時の処理 48 else: 49 #フォームの用意 50 searchform = SearchForm() 51 checkform = GroupCheckForm(request.user) 52 #Groupのリストを取得 53 gps = Group.objects.filter(owner=request.user) 54 glist = [public_group] 55 for item in gps: 56 glist.append(item) 57 #メッセージの取得 58 messages = get_your_group_message(request.user, glist, None) 59 60 #共通処理 61 params = { 62 'login_user':request.user, 63 'contents':messages, 64 'check_form':checkform, 65 'search_form':searchform, 66 } 67 return render(request, 'sns/index.html',params) 68 69@login_required(login_url='/admin/login/') 70def groups(request): 71 #自分が登録したFriendを取得 72 friends = Friend.objects.filter(owner=request.user) 73 74 #POST送信時の処理 75 if request.method == 'POST': 76 77 #Groupメニュー選択肢の処理 78 if request.POST['mode'] == '__groups_form__': 79 #選択したGroupを取得 80 sel_group = request.POST['groups'] 81 #Group取得 82 gp = Group.objects.filter(owner=request.user) \ 83 .filter(title=sel_group).first() 84 #Groupに含まれるFriendを取得 85 fds = Friend.objects.filter(owner=request.user) \ 86 .filter(group=gp) 87 #FriendのUserをリストにまとめる 88 vlist = [] 89 for item in fds: 90 vlist.append(item.user.username) 91 #フォームの用意 92 groupsform = GroupSelectForm(request.user,request.POST) 93 friendsform = FriendsForm(request.user, \ 94 friends=friends, vals=vlist) 95 #Friendsのチェック更新時の処理 96 if request.POST['mode'] == '__friends_form__': 97 #選択したGroupの取得 98 sel_group = request.POST['group'] 99 group_obj = Group.objects.filter(title=sel_group).first() 100 #チェックしたFrindsを取得 101 sel_fds = request.POST.getlist('friends') 102 #FriendsのUserを取得 103 sel_users = User.objects.filter(username__in=sel_fds) 104 #Userのリストに含まれるユーザーが登録したFriendsを取得 105 fds = Friend.objects.filter(owner=request.user) \ 106 .filter(user__in=sel_users) 107 #すべてのFriendにGroupを設定し保存する 108 vlist = [] 109 for item in fds: 110 item.group = group_obj 111 item.save() 112 vlist.append(item.user.username) 113 #メッセージを設定 114 messages.success(request,'チェックされたFriendを' + \ 115 sel_group + 'に登録しました。') 116 #フォームの用意 117 groupsform = GroupSelectForm(request.user, \ 118 {'groups':sel_group}) 119 friendsform = FriendsForm(request.user, \ 120 friends=friends, vals=vlist) 121 #GETアクセス時の処理 122 else: 123 #フォームの用意 124 groupsform = GroupSelectForm(request.user) 125 friendsform = FriendsForm(request.user, friends=friends, \ 126 vals=[]) 127 sel_group = '-' 128 129 #共通処理 130 createform = CreateGroupForm() 131 params = { 132 'login_user':request.user, 133 'groups_form':groupsform, 134 'friends_form':friendsform, 135 'create_form':createform, 136 'group':sel_group, 137 } 138 return render(request, 'sns/groups.html', params) 139 140#Friendの追加処理 141@login_required(login_url='/admin/login/') 142def add(request): 143 #追加するUser取得 144 add_name = request.GET['name'] 145 add_user = User.objects.filter(username=add_name).first() 146 #Userが本人の場合の処理 147 if add_user == request.user: 148 messages.info(request, "自分自身をFriendにすることは\ 149 できません。") 150 return redirect(to='/sns') 151 #publicの取得 152 (public_user, public_group) = get_public() 153 #add_userのFriendの数を調べる 154 frd_num = Friend.objects.filter(owner=request.user) \ 155 .filter(user=add_user).count() 156 #0より大きければすでに登録済み 157 if frd_num > 0: 158 messages.info(request, add_user.username + \ 159 'は既に追加されています。') 160 return redirect(to='/sns') 161 162 #friend登録処理 163 frd = Friend() 164 frd.owner = request.user 165 frd.user = add_user 166 frd.group = public_group 167 frd.save() 168 #メッセージを設定 169 messages.success(request, add_user.username + 'を追加しました! \ 170 groupページに移動して、追加したFriendをメンバーに設定してください') 171 return redirect(to='/sns') 172 173#グループの作成処理 174@login_required(login_url='/admin/login/') 175def creategroup(request): 176 #Groupを作り、Userとtitleを設定して保存する 177 gp = Group() 178 gp.owner = request.user 179 gp.title = request.POST['group_name'] 180 gp.save() 181 messages.info(request,'新しいグループを作成しました。') 182 return redirect(to='/sns/groups') 183 184#メッセージのポスト処理 185@login_required(login_url='/admin/login/') 186def post(request): 187 #POST送信の処理 188 if request.method == 'POST': 189 #送信内容の取得 190 gr_name = request.POST['groups'] 191 content = request.POST['content'] 192 #Groupの取得 193 group = Group.objects.filter(owner=request.user)\ 194 .filter(title=gr_name).first() 195 if group == None: 196 (pub_user, group) = get_public() 197 #Messageを作成し設定して保存 198 msg = Message() 199 msg.owner = request.user 200 msg.group = group 201 msg.content = content 202 msg.save() 203 #メッセージを取得 204 messages.success(request,'新しいメッセージを投稿しました。') 205 return redirect(to='/sns') 206 207 #GETアクセス時の処理 208 else: 209 form = PostForm(request.user) 210 211 params = { 212 'login_user':request.user, 213 'form':form, 214 } 215 return render(request, 'sns/post.html', params) 216 217#投稿をシェアする 218@login_required(login_url='/admin/login/') 219def share(request, share_id): 220 #シェアするメッセージの取得 221 share = Message.objects.get(id=share_id) 222 223 #POST送信時の処理 224 if request.method == 'POST': 225 #送信内容を取得 226 gr_name = request.POST['groups'] 227 content = request.POST['content'] 228 #Groupの取得 229 group = Group.objects.filter(owner=request.user) \ 230 .filter(title=gr_name).first() 231 232 if group == None: 233 (pub_user, group) = get_public() 234 #メッセージを作成し、設定して保存 235 msg = Message() 236 msg.owner = request.user 237 msg.group = group 238 msg.content = content 239 msg.share_id = share.id 240 msg.save() 241 share_msg = msg.get_share() 242 share_msg.share_count += 1 243 share_msg.save() 244 #メッセージを設定 245 messages.success(request,'メッセージをシェアしました') 246 return redirect(to='/sns') 247 248 #共通処理 249 form = PostForm(request.user) 250 params = { 251 'login_user':request.user, 252 'form':form, 253 'share':share, 254 } 255 return render(request, 'sns/share.html',params) 256 257#Goodボタンの処理 258@login_required(login_url='/admin/login/') 259def good(request, good_id): 260 good_msg = Message.objects.get(id=good_id) 261 is_good = Good.objects.filter(owner=request.user)\ 262 .filter(message=good_msg).count() 263 264 if is_good > 0: 265 messages.success(request, '既にメッセージをGoodしています。') 266 return redirect(to='/sns') 267 268 good_msg.good_count += 1 269 good_msg.save() 270 good = Good() 271 good.owner = request.user 272 good.message = good_msg 273 good.save() 274 275 messages.success(request,'メッセージをGoodしました!') 276 return redirect(to='/sns') 277 278 279

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

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

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

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

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

tatamyiwathy

2019/12/03 05:12

views.pyはどのようになっているでしょうか?
hayataka2049

2019/12/03 05:19

過去質問はリンクで示してください。 (できればマークダウンで、難しいのであればURLをそのまま書いても構いませんが、スクショはさすがに困ります)
omocchi

2019/12/03 13:38

views.pyをのせようとしたら文字数制限で出来ませんでした。 出来る範囲だけでのせてもよろしいでしょうか。。 お手数おかけして申し訳ありません。
guest

回答2

0

急ですいません。実は私も、この参考書を買い、djangoを学んでいて、同じところでつまづいています。どこのコードを直して解決したのか教えてれませんか?お願いします。

投稿2020/10/10 00:18

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

おそらくですけど

Python

1 if request.method == 'POST':

でHttpResponseをreturnで返してますけどGETのときに返していないところがあるので、そこが原因だとおもいます。

Python

1 if request.method == 'POST': 2 return HttpResopnse 3 return HttpResponse # <- これが無い

投稿2019/12/05 00:58

tatamyiwathy

総合スコア1039

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

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

omocchi

2019/12/24 02:22

返信遅くなり申し訳ありません。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問