質問編集履歴

7

追記依頼への返答を追記

2017/11/16 00:52

投稿

gomakichi
gomakichi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -135,3 +135,31 @@
135
135
  何がおかしい(何が起きている)のかわからず困っています...。
136
136
 
137
137
  詳しい方よろしくお願いいたします。
138
+
139
+
140
+
141
+ ### 追記(11/16 10:00)
142
+
143
+ ```
144
+
145
+ @app.route('/login', methods=['GET', 'POST'])
146
+
147
+ def login(next=None):
148
+
149
+ print(request.url)
150
+
151
+ ```
152
+
153
+ ↑を実行すると、
154
+
155
+ >>> http://[IPアドレス]/contents/1
156
+
157
+ のように1つ前のURLを取得できます
158
+
159
+
160
+
161
+ しかし、その状態でログインを行うと
162
+
163
+ >>> http://[IPアドレス]/login
164
+
165
+ のようにloginページが1つ前のページ扱いとなってしまいます...

6

引数追加

2017/11/16 00:52

投稿

gomakichi
gomakichi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -100,7 +100,7 @@
100
100
 
101
101
  @app.route('/login', methods=['GET', 'POST'])
102
102
 
103
- def login():
103
+ def login(next=None):
104
104
 
105
105
  print(request.url)
106
106
 

5

引数追加

2017/11/15 06:42

投稿

gomakichi
gomakichi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -118,7 +118,7 @@
118
118
 
119
119
  @app.route('/login', methods=['GET', 'POST'])
120
120
 
121
- def login():
121
+ def login(next=None):
122
122
 
123
123
  print(request.url)
124
124
 

4

誤字修正

2017/11/15 06:41

投稿

gomakichi
gomakichi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
  def unauthorized():
86
86
 
87
- app.logger.info('不正です。')
87
+ app.logger.info('ログイン失敗')
88
88
 
89
89
  print(request.url)
90
90
 
@@ -126,7 +126,7 @@
126
126
 
127
127
  ```
128
128
 
129
- ↑のprint文において、先ほどは取れていたuRLではなく
129
+ ↑のprint文において、先ほどは取れていたURLではなく
130
130
 
131
131
  http://~~~~~/loginのようにログインページが1つ前のページ扱いになってしまいます。
132
132
 

3

調べてわかったことを追記

2017/11/15 06:40

投稿

gomakichi
gomakichi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
 
76
76
 
77
- ### 追記(11/15 11:00)
77
+ ### 追記(11/15 15:00)
78
78
 
79
79
  request.urlというものを知りました。
80
80
 
@@ -110,22 +110,28 @@
110
110
 
111
111
  と記載すると1つ前のURLが取れているように見えます。
112
112
 
113
+
114
+
113
- その後、ログインしたら先ほどのURLにリダレクトするように
115
+ その後、1つ前のURLを保持した状態でログンをする
114
116
 
115
117
  ```
116
118
 
117
- if 'next' in request.url:
119
+ @app.route('/login', methods=['GET', 'POST'])
118
120
 
121
+ def login():
122
+
119
- return redirect(request.args.get(next))
123
+ print(request.url)
124
+
125
+ ~~~
120
126
 
121
127
  ```
122
128
 
123
- と書いているですが、そもそものifが通らず困っています。
129
+ printにおい、先ほどは取れてたuRLではなく
124
130
 
125
- (エラーなどは特に出ていません)
131
+ http://~~~~~/loginのようにログインペジが1つ前のページ扱いにしまいます。
126
132
 
127
133
 
128
134
 
129
- 何がおかしいのでしょうか...?
135
+ 何がおかしい(何が起きている)のかわからず困っています...
130
136
 
131
137
  詳しい方よろしくお願いいたします。

2

調べたことを追記

2017/11/15 06:27

投稿

gomakichi
gomakichi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -71,3 +71,61 @@
71
71
  def home():
72
72
 
73
73
  ```
74
+
75
+
76
+
77
+ ### 追記(11/15 11:00)
78
+
79
+ request.urlというものを知りました。
80
+
81
+ ```
82
+
83
+ @login_manager.unauthorized_handler
84
+
85
+ def unauthorized():
86
+
87
+ app.logger.info('不正です。')
88
+
89
+ print(request.url)
90
+
91
+ return redirect(url_for('login', next=request.url))
92
+
93
+ ```
94
+
95
+ ↑のようにrequest.referrerからrequest.urlに変更したところ前のページのURLを取得することができました。
96
+
97
+ リダイレクト先のdef loginでも
98
+
99
+ ```
100
+
101
+ @app.route('/login', methods=['GET', 'POST'])
102
+
103
+ def login():
104
+
105
+ print(request.url)
106
+
107
+ ~~~
108
+
109
+ ```
110
+
111
+ と記載すると1つ前のURLが取れているように見えます。
112
+
113
+ その後、ログインしたら先ほどのURLにリダイレクトするように
114
+
115
+ ```
116
+
117
+ if 'next' in request.url:
118
+
119
+ return redirect(request.args.get(next))
120
+
121
+ ```
122
+
123
+ と書いているのですが、そもそものif文が通らず困っています。
124
+
125
+ (エラーなどは特に出ていません)
126
+
127
+
128
+
129
+ 何がおかしいのでしょうか...?
130
+
131
+ 詳しい方よろしくお願いいたします。

1

自分で調べた内容を追記しました。

2017/11/15 02:40

投稿

gomakichi
gomakichi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -27,3 +27,47 @@
27
27
 
28
28
 
29
29
  Pythonの特徴的にあまりこういった1ページ前のuRL取得などの処理は行わないのが一般的なのでしょうか?
30
+
31
+
32
+
33
+ ### 追記(11/14 17:00)
34
+
35
+ request.refferrerというものがあることを知りました。
36
+
37
+ しかし、ログイン後の各ページの移動の際にはきちんと前のページのURLを取得することができますが、ログイン前の状態でログイン後に遷移可能なページのURLを直接叩いても取得されず、Noneとなってしまいます。
38
+
39
+
40
+
41
+ ログイン後に遷移できるページには
42
+
43
+ @login_requiredを使用しているため、そもそもURLが取れないのでしょうか...?
44
+
45
+ ```
46
+
47
+ @login_manager.unauthorized_handler
48
+
49
+ def unauthorized():
50
+
51
+ app.logger.info('ログイン失敗')
52
+
53
+ print(request.referrer)
54
+
55
+ return redirect(url_for('login', next=request.referrer))
56
+
57
+ ```
58
+
59
+ ↑の```print(request.referrer)```がNoneになります
60
+
61
+
62
+
63
+ ↓遷移可能なページの処理を記載しているところ
64
+
65
+ ```
66
+
67
+ @app.route('/')
68
+
69
+ @login_required
70
+
71
+ def home():
72
+
73
+ ```