我们这里说的是数据库结构:
class News(db.Model):
title = db.StringProperty()
class NewsRating(db.Model):
user = db.IntegerProperty()
rating = db.IntegerProperty()
news = db.ReferenceProperty(News)
Run Code Online (Sandbox Code Playgroud)
每个用户只能为每个新闻留下一个评级.以下代码不关心重复:
rating = NewsRating()
rating.user = 123456
rating.rating = 1
rating.news = News.get_by_key_name('news-unique-key')
rating.put()
Run Code Online (Sandbox Code Playgroud)
我该如何修改它将允许每个rating.user和rating.news组合只有一个记录?如果此类评级已存在,则应使用新值进行更新.
我使用jQuery UI 自动完成小部件.我也有GAE数据存储区:
class Person(db.Model):
# key_name contains person id in format 'lastname-firstname-middlename-counter',
# counter and leading dash are omitted, if counter=0
first_name = db.StringProperty()
last_name = db.StringProperty()
middle_name = db.StringProperty()
Run Code Online (Sandbox Code Playgroud)
当用户可以输入姓氏,名字和/或中间名时,如何在自动填充小部件中搜索此人?
所以,我得到的用户输入字符串为self.request.get('term').我应该如何在我的数据存储区中搜索相同内容(因为我需要查看每个字段,可能还有3个字段的组合值)?如何优化这样的查询?我也不清楚答复格式应该是什么.jQuery doc说:
数据源可以是:
Run Code Online (Sandbox Code Playgroud)an Array with local data a String, specifying a URL a Callback本地数据可以是一个简单的字符串数组,也可以包含数组中每个项目的对象,带有标签或值属性或两者.
目前,我通过 Ben 的 Alman jquery-hashchange 插件在哈希中使用页码:
$(document).ready(function(){
$(window).hashchange( function(){
var hash = (location.hash) ? location.hash.slice(1) : 'page1';
$.ajax({
url: '/list/' + hash, // result url like page1, page2 etc.
Run Code Online (Sandbox Code Playgroud)
现在我需要添加一个值 - filter。我认为结果哈希 URL 可能看起来像
#page1&filter=1-1-0
#filter=1-1-0 (if page number is omitted)
#page1 (if filter is not defined)
Run Code Online (Sandbox Code Playgroud)
该如何解析呢?即如何理解是否page已定义,是否filter已定义(以及值是什么 - 1,1和0- 我分别需要它们)?
我正在考虑 Ben 的 Alman BBQ 插件,但是 (1) 对于这样简单的任务来说,它看起来太复杂了,(2) 不确定如何使用没有值的参数(page1、page2 等)。
我用ajax调用更新html.我需要将元素添加为隐藏,然后应用动画:
$.ajax({
success: function (data, textStatus) {
$(".comments").prepend(data);
$(".comments .comment-frame:first").slideDown("slow"); // it doesn't work, since element is visible
Run Code Online (Sandbox Code Playgroud)
数据添加:
<div class="comment-frame">
...
</div>
Run Code Online (Sandbox Code Playgroud)
我无法修改css以使类comment-frame隐藏,因为我已经在页面上具有相同类的其他元素,这些元素应保持可见.所以,不知怎的,我应该把它添加data为隐藏.我该怎么做?
这是我做的:
class Person(db.Model):
first_name = db.StringProperty()
last_name = db.StringProperty()
middle_name = db.StringProperty()
...
photo = db.BlobProperty()
person = Person.get_by_key_name(person_key_name)
if person == None or not person.photo:
self.response.set_status(404, 'Not Found')
return
self.response.headers['Content-Type'] = "image/png"
self.response.out.write(person.photo)
Run Code Online (Sandbox Code Playgroud)
我不应该SELECT只使用一个字段(photo)而不是get_by_key_name?
我想创建电影数据库,用户可以在其中标记他/她观看和喜欢的电影:
class Movies(ndb.Model):
watched = ndb.UserProperty()
liked = ndb.UserProperty()
Run Code Online (Sandbox Code Playgroud)
那会有用吗?我使用Google帐户.我应该如何选择用户喜欢的所有电影?
更新.我遵循了systempuntoout方法并使用以下代码来保存用户选择:
user = users.get_current_user()
if user:
userschoices = models.UsersChoices(
movie=ndb.Key(models.Movies, movie_id), # TODO: what if movie_id is wrong?
watched=True,
user_id=user.user_id()
)
try:
userschoices.put()
self.response.out.write('1')
except:
self.response.out.write('0')
Run Code Online (Sandbox Code Playgroud)
但是如果用户多次做出选择,那么会在数据存储区中添加几条记录...将用户ID和电影ID保存为键名不是更好吗?
userschoices = models.UsersChoices.get_by_id(user.user_id() + '-' + movie_id)
if userschoices is None:
userschoices = models.UsersChoices(id=user.user_id() + '-' + movie_id)
userschoices.movie = ndb.Key(models.Movies, movie_id) # TODO: what if movie_id is wrong?
userschoices.user_id = user.user_id()
if option == 'liked':
userschoices.liked = True …Run Code Online (Sandbox Code Playgroud) 根据GAE获取文档,cookie不会通过重定向处理:
重定向时不处理Cookie.如果需要cookie处理,请将follow_redirects设置为False并手动处理cookie和重定向.
所以,我正在尝试实施手动解决方案:
page = urlfetch.Fetch(
url = url,
payload = form_data,
method = urlfetch.POST,
headers = headers,
follow_redirects = False,
deadline = 60)
cookies = ''
while page.status_code == 302:
url = page.headers.get('location')
if page.headers.get('set-cookie'):
cookies = page.headers.get('set-cookie')
headers['cookie'] = cookies
page = urlfetch.Fetch(
url = url,
method = urlfetch.GET,
headers = headers,
follow_redirects = False,
deadline = 60)
if page.status_code == 200 and page.content:
self.response.out.write(page.content)
Run Code Online (Sandbox Code Playgroud)
但它没有按预期工作.看起来我错过了一些饼干:
header_msg包含响应头的httplib.HTTPMessage实例.如果可能有多个具有相同名称的标头(例如,Set-Cookie标头),请调用header_msg.get_headers(header_name)以将值检索为列表.
但是我应该如何使用header_msg呢?
我想用django模板进行电子邮件发送.但我应该有两个版本的电子邮件 - HTML和纯文本.第一个版本生成如下:
template_values = {
'company_id': company.id
}
template_file = os.path.join(os.path.dirname(__file__), 'templates/email.html')
html = template.render(template_file, template_values)
Run Code Online (Sandbox Code Playgroud)
现在我应该从同一个文件生成纯文本 - templates/email.html但它包含html标签(如<div style="font-size:13px; margin: 14px; position:relative">),我应该删除(链接应该保留,但应该用纯文本替换,例如,<a href="http://example.com">Example</a>应该替换为类似的东西Example (http://example.com)).
我已经读过,我不应该使用正则表达式.什么样的内置GAE库可以帮助我?或者有没有办法以某种方式使用django的striptags?
我使用以下代码使文本视图可滚动:
TextView mTextView6 = (TextView) findViewById(R.id.wizard6_text1);
mTextView6.setMovementMethod(new ScrollingMovementMethod());
Run Code Online (Sandbox Code Playgroud)
和以下代码使链接(给定为<a href="http://example.com">example</a>)可点击:
mTextView6.setMovementMethod(LinkMovementMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)
它分别很好用.但我应该如何一起使用它?
我正在用eyeD3获得mp3标签(ID V1),并想了解其编码。这是我尝试的方法:
>>> print(type(mp3artist_v1))
<type 'unicode'>
>>> print(type(mp3artist_v1.encode('utf-8')))
<type 'str'>
>>> print(mp3artist_v1)
Zåìôèðà
>>> print(mp3artist_v1.encode('utf-8').decode('cp1252'))
ZåìôèðÃ
>>> print(u'Z??????'.encode('utf-8').decode('cp1252'))
Zемфира
Run Code Online (Sandbox Code Playgroud)
如果我使用在线工具对值进行解码,则表示Zемфира可以Z??????通过更改编码将值转换为正确的值,CP1252 ? UTF-8并Zåìôèðà通过更改编码(如)来将值转换为正确的值CP1252 ? CP1251。
我应该怎么做才能Z??????从mp3artist_v1?.encode('cp1252').decode('cp1251')效果很好,但我怎么能自动理解可能的编码(仅3编码是可能的- ,cp1251,cp1252?utf-8我正打算使用下面的代码:
def forceDecode(string, codecs=['utf-8', 'cp1251', 'cp1252']):
for i in codecs:
try:
print(i)
return string.decode(i)
except:
pass
print "cannot decode url %s" % ([string])
Run Code Online (Sandbox Code Playgroud)
但这无济于事,因为我应该先使用一个字符集进行编码,然后再使用另一个字符集进行解码。