在我的urls.py中,我有以下内容:
url(r'^foo/', FooView.as_view(), name='foo_name'),
FooView可能会返回404
所以在我使用之前:
url = reverse('foo_name', args=(,))
我想确保视图不会返回404。
我该怎么做,有没有办法检查resolve
?
答案 0 :(得分:2)
resolve
的文档证明了这一点。您需要首先反转url,然后您可以解析url以获取视图的callable,并运行视图以查看它是否会引发404.请注意视图是否有影响(例如,更改数据库中的数据),因为代码实际上会运行视图。
int current = 0;
ServerSocket serverSocket = null;
InputStream in = null;
OutputStream output = null;
DataInputStream ClientData;
try{
serverSocket = new ServerSocket(8988);
Socket ClientSocket = null;
ClientSocket = serverSocket.accept();
in = ClientSocket.getInputStream();
ClientData = new DataInputStream(in);
String FileName = ClientData.readUTF();
output = new FileOutputStream(Environment.getExternalStorageDirectory()+"/" + FileName);
long size = ClientData.readLong();
byte[] buffer = new byte[8192];
int bytesRead;
while((bytesRead = ClientData.read(buffer)) > 0){
output.write(buffer, 0, bytesRead);
}
output.flush();
in.close();
output.close();
ClientSocket.close();
serverSocket.close();
return FileName;
} catch (IOException e) {
Log.e(WiFiDirectActivity.TAG, e.getMessage());
return null;
}
请注意,这只是测试您当前请求的网址。网址可能会返回404,具体取决于许多因素,包括请求时间,登录用户或请求方法。
答案 1 :(得分:0)
如果只是测试你的urls.py中是否匹配,你可以:
try:
url = reverse('foo_name', args=(,))
except NoReverseMatch:
# do sth
else:
# do sth else
这不会测试将被调用的特定视图最终是否会返回404。
参考:Django docs