Djangoテストの2つの方法
3842 ワード
#coding=utf-8
import urllib
import urllib2
host_ip = 'localhost'
port = '8000'
def get_test_data_list(file_name):
with open(file_name,'r') as read_file:
return read_file.read().strip().split('
')
def process_data_get_method(data):
url_get_method ='http://%s:%s/dev/?sentence='%(host_ip,port)
try:
url_process = urllib2.urlopen(url_get_method+data).read()
return url_process
except urllib2.HTTPError, e:
print 'error code:',e.code
except urllib2.URLError, e:
print str(e)
def process_data_post_method(data):
url_post_method ='http://%s:%s/dev/'%(host_ip,port)
values = {'sentence' :data}
data = urllib.urlencode(values)
req = urllib2.Request(url_post_method, data)
response = urllib2.urlopen(req)
the_page = response.read()
return the_page
if __name__== '__main__':
print process_data_get_method(' app')
print process_data_post_method(' app')
テストで次のエラーが検出されました.
RuntimeError: You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to localhost:8000/dev/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.
postのメソッドでは、urlエラー:エラーurl:http://%s:%s/dev正しいurl:http://%s:%s/dev/はurlの一番後ろに反スラッシュが1つ足りないことがわかりました.修正が完了したpostメソッドには、次のエラーが続きます.
`
django.security.csrf - WARNING - Forbidden (CSRF cookie not set.): /dev/
[25/May/2018 02:38:38] "POST /dev/ HTTP/1.1" 403 2857
アクセスエラーを拒否すると、CSRFというコントロールがブロックされていることがわかります.Djangoでのsetting.pyで:
`
'django.middleware.csrf.CsrfViewMiddleware'
を見つけて、この行を注釈すればいいです.