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

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

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

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

Python

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

Q&A

1回答

6428閲覧

Django:GETとPOSTの処理方法

Abenosan

総合スコア25

Django

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

Python

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

0グッド

0クリップ

投稿2018/11/02 02:22

編集2018/11/02 03:58

Python歴1ヶ月の初心者です。

GETとPOSTを分けて処理するのは理解できるのですが、POSTの場合処理が1つじゃなくて複数あった場合どういった書き方が出来るのでしょうか。

理想の形(改善後予定)

views

1class user_add(TemplateView): 2 def __inif__(self,request): 3 self.params = { 4 'title':"タイトル" 5 } 6 7 def get(self,request): 8 return render(request, 'hello/index.html', self.params) 9 10 def post(self,request): 11 ブラウザからの処理が複数の場合の書き方

例:

html

1<form action="{% url 'user_add' %}" method="post"> 2 <input type="submit" name=user_add value="ユーザ登録"> 3<form> 4<form action="{% url 'user_add' %}" method="post"> 5 <input type="submit" name=task_add value="タスク追加"> 6<form> 7<form action="{% url 'user_add' %}" method="post"> 8 <input type="submit" name=task_delete value="タスク削除"> 9<form>

私が書いた糞コード

以前私はすべてif文で分岐させていました。
フォームから届いたPOSTをif文で判定させて、同じ部品名があったらそのTrueを返すロジックを組みました。

現在の形(改善前)

def user_add(request, num=1):   if 'user_add' in request.POST:  処理内容 return redirect('user_add', num=1) # 完了したToDoを完了ToDoリストに追加 if 'task_add' in request.POST or 'id' in request.POST:  処理内容 return redirect('user_add', num=1) # ログアウト:セッションを削除してindex.htmlにredirect if 'task_delete' in request.POST:   処理内容 return render(request, 'todo/user_add.html', pramas)

ご教示よろしくお願いします。

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

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

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

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

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

Abenosan

2018/11/02 04:20

教えてください
quickquip

2018/11/02 05:19

? どちらかが解決したらもう一方に、解決した方法を転記するなり、解決した方へのリンクを追加するなりして情報が欠けたページを作らないようにしましょうね。というごくまっとうな指針だと思いますけど。
Abenosan

2018/11/02 05:22

了解しました。ありがとうございます!!
guest

回答1

0

ルーティングをそれぞれ定義するのがよいと思います。
user_add、task_add、task_delete
それぞれのPOST先をurls.pyに記載して

def user_add のほかに
def task_add 
def task_delete 
のような別関数として定義したものを紐付けるのが見やすいきがします。

参考
https://hombre-nuevo.com/python/python0046/
(「Django ルーティング」で検索すればいろいろでてきます。)

投稿2018/11/02 09:50

miyasaka

総合スコア271

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

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

Abenosan

2018/11/05 01:29

ご回答ありがとうございます。 ルーティングをそれそれ定義とおっしゃっていますが、各ユーザーごとの処理を行いたい場合はどのように指定してあげればいいでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問