我最近开始研究Django,现在我的应用程序即将完成,我开始怀疑安全性和最佳实践.
我有视图,在页面中生成一个页面和不同的函数,发布AJAX请求到单个视图.例如,我有一个名为show_employees的视图,我可以通过将一个post请求传递给视图delete_employee和update_employee来删除和更新员工.
我在每个视图之前放置了@login_required装饰器,因为我不希望任何人在未经过身份验证的情况下访问它们.这个可以吗?
在delete_employee和update_employee视图中,我只响应请求,如果它是AJAX POST请求(uisng is_ajax()).这个可以吗?
当视图成功执行所需操作时返回"成功",当表单中存在验证错误时返回错误但我仍然没有处理其他异常.我该怎么做?我应该通过像Ajax响应返回标准500页这通过用try-except块来处理所有的异常包裹的看法?
还有什么我可以保证我的观点吗?
这是我的示例视图:
@login_required
def add_site(request):
data = {}
if request.method == 'POST':
if request.is_ajax():
form = AddSiteForm(request.user, request.POST)
if form.is_valid():
site = form.save(commit=False)
site.user = request.user
site.save()
data['status'] = 'success'
data['html'] = render_to_string('site.html', locals(), context_instance=RequestContext(request))
return HttpResponse(simplejson.dumps(data), mimetype='application/json')
else:
data['status'] = 'error'
data['errors'] = {}
for field, error in form.errors.iteritems():
data['errors']['id_'+field] = strip_tags(unicode(error))
return HttpResponse(simplejson.dumps(data), mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个有选择列表的表单:
<select name="cellSerpro" id="idcellserpro" class="field text" >
<option value="">---</option>
<option value="option1">Verizon</option>
<option value="option2">AT&T</option>
<option value="option3">T-Mobile</option>
<option value="option4">Sprint</option>
</select>
Run Code Online (Sandbox Code Playgroud)
那么我如何从Django的模型类中获取它的选定值以便将其保存在数据库中,我已经通过网络进行了搜索,但却无法找到任何方法.
我的样本模型:
class Author(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=3)
cellSerpro = # ---- how to declare the choice list and get the selected value ----
Run Code Online (Sandbox Code Playgroud)
谢谢,谢谢..
我使用Spreadsheet_Excel_Writer生成.xls文件,它工作正常,直到我必须处理大量数据.在某个阶段,它只是写了一些无意义的字符并退出填充某些列.但是有些列是最后的字段(通常是数字数据)
我不太确定xls文档是如何形成的:逐行或col by col ...而且它显然不是字符串中的错误,因为当我删除一些数据时,错误会再次出现.
我认为我的所有代码都没有必要
这里有一些必需品
$filename = 'file.xls';
$workbook = & new Spreadsheet_Excel_Writer();
$workbook->setVersion(8);
$contents =& $workbook->addWorksheet('Logistics');
$contents->setInputEncoding('UTF-8');
$workbook->send($filename);
//here is the part where I write data down
$contents->write(0, 0, 'Field A');
$contents->write(0, 1, 'Field B');
$contents->write(0, 2, 'Field C');
$ROW=1;
foreach($ordersArr as $key=>$val){
$contents->write($ROW, 0, $val['a']);
$contents->write($ROW, 1, $val['b']);
$contents->write($ROW, 2, $val['c']);
$ROW++;
}
$workbook->close();
Run Code Online (Sandbox Code Playgroud) 当我在线上传我的网站时.我使用可爱的FTP上传网站.在我使用网址运行网站后在线上传网站后,它会给出这样的错误
访问被拒绝.(来自HRESULT的异常:0x80070005(E_ACCESSDENIED))描述:在执行当前Web请求期间发生了未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.UnauthorizedAccessException:拒绝访问.(HRESULT异常:0x80070005(E_ACCESSDENIED))
ASP.NET无权访问所请求的资源.考虑将资源的访问权限授予ASP.NET请求标识.ASP.NET具有基本进程标识(通常是IIS 5上的{MACHINE}\ASPNET或IIS 6上的网络服务),如果应用程序未模拟,则使用该标识.如果应用程序模拟通过,则标识将是匿名用户(通常为IUSR_MACHINENAME)或经过身份验证的请求用户.
要授予对文件的ASP.NET访问权限,请在资源管理器中右键单击该文件,选择"属性",然后选择"安全"选项卡.单击"添加"以添加适当的用户或组.突出显示ASP.NET帐户,并选中所需访问的框.
这是错误页面.
我在一些遗留代码中遇到了一大堆旧的方法调用,其中一个或一些正在制造瓶颈并且确实减慢了速度.有没有快速的方法我可以获得一个报告,说明哪些方法调用花费时间,没有在调试中运行,单步执行并查看光标暂停的位置?
在"好旧的JDBC时代"中,我编写了许多SQL代码,只对实际更改的"属性/成员"进行了非常有针对性的更新:
例如,考虑具有以下成员的对象:
public String name;
public String address;
public Date date;
Run Code Online (Sandbox Code Playgroud)
如果仅date在某些Business Method中更改,我只会UPDATE为该date成员发出SQL .
然而,似乎(这是我对Hibernate的"印象")当使用标准Hibernate映射(映射完整类)时,即使只有单个成员的更新也会导致Hibernate生成的SQL语句中对象的完全更新.
我的问题是:
这个观察是否正确,Hibernate 不会智能地检查(在完全映射的类中),哪些成员发生了更改,然后只发布特定更改成员的更新,而是始终更新(在生成的SQL Update语句中)所有映射成员(一个类),即使它们没有被更改(如果由于一个成员变脏而导致对象变脏...)
我该怎么做才能让Hibernate更新那些已被更改的成员?我正在寻找一个解决方案让Hibernate只更新实际更改的成员.
(我知道Hibernate在脏检查方面做了很多工作,但据我所知,这个脏检查只与识别整个对象是否脏,而不是单个成员是脏的有关.)
我有一个混合HTML和js的代码.我无法理解它.
location.description + '<br><a href="javascript:void(0);" onclick="showStreet;">ShowStreet </a><br>'+ location.lat + '<br> + location.lng
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我吗?
假设我声明了一个变量:
String a = "test";
Run Code Online (Sandbox Code Playgroud)
我想知道它是什么类型,即输出应该是java.lang.String我该怎么做?
我正在开发一个Rails 2.3,Ruby 1.9.1 webapplication,它在每个请求之前进行了大量的计算.对于每个请求,它必须计算具有300个节点和~1000个边的图.图形及其所有节点,边和其他对象都为每个请求(~2000个对象)初始化 - 实际上它们是使用Marshal.load(Marshal.dump())从未计算的缓存图中克隆的.
性能在这里是一个很大的问题.现在整个请求平均需要150毫秒.然后我看到在请求期间,部分计算随机需要更长时间.假设这可能是GarbageCollector,我将请求包装在GC.disable和GC.enable中,以便请求等待使用garbagecollecting直到计算和渲染完成.
def query
GC.disable
calculate
respond_to do |format| format.html {render} end
GC.enable
end
Run Code Online (Sandbox Code Playgroud)
现在平均请求大约需要100毫秒(减少50毫秒).
但我不确定这是一个好的/稳定的解决方案,我认为这样做肯定有缺点.有没有人遇到过类似问题或看到上述代码有问题?