我在使用{%ifequal s1"某些文本"%}时遇到问题,以便在Django模板中比较字符串和扩展字符.当字符串s1包含> 71的ascii字符时,我在模板渲染中得到异常.我究竟做错了什么?我在数据,模板和Python代码中的其余应用程序中使用UTF-8编码没有任何问题.
views.py
def test(request):
return render_to_response("test.html", {
"s1": "dados",
"s2": "aprovação",
}
)
Run Code Online (Sandbox Code Playgroud)
的test.html
s1={{s1}}<br>
s2={{s2}}<br>
{% ifequal s1 "dados" %}
s1="dados" is true
{% endifequal %}
{% ifequal s1 "aprovação" %}
s1="aprovação" is true
{% endifequal %}
{% comment %}
The following two comparions cause the following exception:
Caught an exception while rendering: 'ascii' codec can't decode byte 0xc3 in position 6: ordinal not in range(128)
{% ifequal s2 "dados" %}
s2="dados" is true
{% endifequal %} …Run Code Online (Sandbox Code Playgroud) 我正在使用以下内容将一些Word文档嵌入到我们的网页中iframe:
<iframe src="ftp://ftp.example.com/www/uploads/Image/test.doc" width="100%" height="400">
Alternative
</iframe>
Run Code Online (Sandbox Code Playgroud)
问题是嵌入式Word控件允许用户编辑文档并显示一个图标来保存它们,但实际上并没有保存任何内容.是否可以设置Word以将编辑保存回FTP服务器?如果没有,那么我们是否可以将文档设为只读,以便用户不会认为他们可以进行更改?我们正在使用IE7和Word 2003.
(我刚刚问了一个关于将Word保存到FTP服务器的相关问题:Word可以直接在没有Sharepoint的Web服务器上编辑文档吗?)
我一直在使用South来跟踪和管理数据库架构更改的Django项目上进行工作。我正在使用Google Web Toolkit开始一个新的Java项目,想知道是否有一个等效的工具。对于那些不知道的人,这是South的工作:
我还没有决定我的Java ORM,但是Hibernate看起来是最受欢迎的。对我而言,轻松进行数据库架构更改的能力将是一个重要因素。
我在Google Web Toolkit中有一个POJO,我可以从服务器中检索.
class Person implements Serializable {
String name;
Date creationDate;
}
Run Code Online (Sandbox Code Playgroud)
当客户端进行更改时,我使用GWT RemoteServiceServlet将其保存回服务器,如下所示:
rpcService.saveObject(myPerson,...)
Run Code Online (Sandbox Code Playgroud)
问题是用户不应该改变creationDate.由于RPC方法实际上只是服务器的HTTP POST,因此可以creationDate通过更改POST请求来修改它.
一个简单的解决方案是创建一系列RPC函数,例如changeName(String newName),等等,但是具有许多字段的类将需要针对每个字段的许多方法,并且一次更改多个字段将是低效的.
我喜欢在服务器和GWT客户端上使用单个POJO的简单性,但需要一种安全的方法.有任何想法吗?
编辑
我正在重新提交赏金,试图看看是否还有其他想法.也许我原来的问题过于关注GWT的具体细节.我认为这是任何使用JavaBeans在安全(servlet容器)和不安全(web浏览器)环境之间传递数据的系统的一般性问题.
编辑2
另外,为了清楚起见,我使用该字段creationDate作为问题的一个例子.实际上,我正在使用的代码更复杂,有许多不同的领域.
python中给定一个Decimal数字,如何找到小数点后的位数?
assert digits(Decimal('1.2345')) == 4
assert digits(Decimal('1000')) == 0
assert digits(Decimal('1.00')) == 2
assert digits(Decimal('1E+5')) == 0
assert digits(Decimal('1.2E+5')) == 0
Run Code Online (Sandbox Code Playgroud) 当然有更好的方法来做到这一点?
results = []
if not queryset is None:
for obj in queryset:
results.append((getattr(obj,field.attname),obj.pk))
Run Code Online (Sandbox Code Playgroud)
问题是有时queryset是None,当我尝试迭代它时会导致异常.在这种情况下,我只想将结果设置为空列表.这段代码来自Django视图,但我认为不重要 - 这似乎是一个更普遍的Python问题.
编辑:我发现我的代码是将一个空的查询集转换为"无"而不是返回一个空列表.能够假设查询集始终是可迭代的,通过允许删除"if"语句来简化代码.下面的答案可能对有相同问题的其他人有用,但无法修改其代码以保证查询集不是"无".
我正在开发一个在Google App Engine上运行的GWT应用程序,想知道我是否需要担心跨站点请求伪造或者是否会自动为我处理?
对于每个需要身份验证的RPC请求,我都有以下代码:
public class BookServiceImpl extends RemoteServiceServlet implements
BookService {
public void deleteInventory(Key<Inventory> inventoryKey) throws NotLoggedInException, InvalidStateException, NotFoundException {
DAO dao = new DAO();
// This will throw NotLoggedInException if user is not logged in
User user = dao.getCurrentUser();
// Do deletion here
}
}
public final class DAO extends DAOBase {
public User getCurrentUser() throws NotLoggedInException {
currentUser = UserServiceFactory.getUserService().getCurrentUser();
if(currentUser == null) {
throw new NotLoggedInException();
}
return currentUser;
}
Run Code Online (Sandbox Code Playgroud)
我找不到任何关于UserService检查身份验证的文档.是否足以依赖上面的代码或我需要更多?我是初学者,但据我所知,为了避免CSRF攻击,一些策略是:
我有一个TimeSeries整数,我想使用下采样resample().问题是我有一些时期丢失的数据被转换为NaN.由于pandas不支持整数NA值,因此整数将转换为浮点数.
是否有可能重新取样TimeSeries使用fill_value像我可以与丢失的数据reindex(fill_value=0)?我不希望我的整数投入花车.
>>> dates = (datetime(2013, 1, 1), datetime(2013,1,2), datetime(2013,3,1))
>>> s = Series([1,2,4],index=dates)
>>> s
2013-01-01 1
2013-01-02 2
2013-03-01 4
dtype: int64
>>> s.resample('M', how='sum')
2013-01-31 3
2013-02-28 NaN
2013-03-31 4
Freq: M, dtype: float64
# Desired output (doesn't work)
>>> s.resample('M', how='sum', fill_value=0)
2013-01-31 3
2013-02-28 0
2013-03-31 4
Freq: M, dtype: int64
Run Code Online (Sandbox Code Playgroud) 我编写了一个CGI脚本,使用GET数据动态创建图像.要在我的网页中包含此图片,我使用以下代码:
<img src="image.py?text=xxxxxxxxxxxxxx">
Run Code Online (Sandbox Code Playgroud)
问题是我希望将来"text"字段会变得很长,而且URL会变得太大.从谷歌搜索周围似乎没有固定的URL长度限制(即取决于浏览器,服务器,代理等)有没有更好的方法来做到这一点?
如果它很重要,我正在使用Django和Python,我不能使用任何客户端脚本(即JavaScript).
干杯,本
我正在使用boto和Python编写脚本来自动启动Amazon EC2实例并使用SSH与它进行交互.一切正常,但每次建立连接时,SSH都会提示我确认主机的真实性,如下所示:
The authenticity of host 'ec2-174-129-121-25.compute-1.amazonaws.com (174.129.121.25)' can't be established.
RSA key fingerprint is 26:09:bd:21:4f:55:20:3f:0d:fc:5f:cc:3e:08:30:db.
Are you sure you want to continue connecting (yes/no)?
Run Code Online (Sandbox Code Playgroud)
我的SSH命令是:
ssh -i ssh2.pem root@ec2-174-129-121-25.compute-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
由于每个EC2实例都是一个新主机,我每次都必须确认这一点,但我想要一个没有任何用户输入的自动脚本.什么是最好的解决方案?
在我的Django应用程序中,我具有从数据库中删除模型的单个实例的代码。两个并发请求都可能同时尝试删除同一模型。在这种情况下,我希望一个请求成功而另一个请求失败。我怎样才能做到这一点?
问题在于,当使用删除实例时delete(),Django不会返回有关命令是否成功的任何信息。此代码说明了问题:
b0 = Book.objects.get(id=1)
b1 = Book.objects.get(id=1)
b0.delete()
b1.delete()
Run Code Online (Sandbox Code Playgroud)
这两个delete()命令中只有一个实际上删除了该对象,但是我不知道哪个。不会引发任何异常,也不会返回任何指示命令成功的信息。在纯SQL中,该命令将返回删除的行数,如果该值为0,我知道删除失败。
我将PostgreSQL与默认的Read Commited隔离级别配合使用。我对此级别的理解是,每个命令(SELECT,DELETE等)都可以看到数据库的快照,但是下一个命令可以看到数据库的不同快照。我相信这意味着我不能做这样的事情:
# I believe this wont work
@commit_on_success
def view(request):
try:
book = Book.objects.get(id=1)
# Possibility that the instance is deleted by the other request
# before we get to the next delete()
book.delete()
except ObjectDoesntExist:
# Already been deleted
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
django ×5
python ×5
java ×3
gwt ×2
security ×2
amazon-ec2 ×1
boto ×1
cgi ×1
csrf ×1
database ×1
decimal ×1
django-south ×1
hibernate ×1
html ×1
image ×1
iterator ×1
javabeans ×1
ms-office ×1
ms-word ×1
numbers ×1
office-2003 ×1
orm ×1
pandas ×1
postgresql ×1
refactoring ×1
resampling ×1
servlets ×1
ssh ×1
ssh-keys ×1
time-series ×1
transactions ×1
unicode ×1