擅长:python、mysql、java
<p>在Django中,如果不修改url的传递方式来查看函数,就很难更改内置的假设。</p>
<p>这里不是在Django内部胡闹,而是一个你可以使用的审计。只需检查每个视图功能。</p>
<pre><code>import os
import re
def view_modules( root ):
for path, dirs, files in os.walk( root ):
for d in dirs[:]:
if d.startswith("."):
dirs.remove(d)
for f in files:
name, ext = os.path.splitext(f)
if ext == ".py":
if name == "views":
yield os.path.join( path, f )
def def_lines( root ):
def_pat= re.compile( "\n(\S.*)\n+(^def\s+.*:$)", re.MULTILINE )
for v in view_modules( root ):
with open(v,"r") as source:
text= source.read()
for p in def_pat.findall( text ):
yield p
def report( root ):
for decorator, definition in def_lines( root ):
print decorator, definition
</code></pre>
<p>运行此命令并在没有适当的修饰符的情况下检查<code>def</code>s的输出。</p>