小编LA_*_*LA_的帖子

如何避免GAE数据存储中的重复?

我们这里说的是数据库结构:

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.userrating.news组合只有一个记录?如果此类评级已存在,则应使用新值进行更新.

google-app-engine google-cloud-datastore

3
推荐指数
1
解决办法
1446
查看次数

如何使用GAE创建自动完成?

我使用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说:

数据源可以是:

an Array with local data
a String, specifying a URL
a Callback
Run Code Online (Sandbox Code Playgroud)

本地数据可以是一个简单的字符串数组,也可以包含数组中每个项目的对象,带有标签或值属性或两者.

google-app-engine jquery-ui google-cloud-datastore

3
推荐指数
1
解决办法
1647
查看次数

如何使用多个哈希值?

目前,我通过 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已定义(以及值是什么 - 110- 我分别需要它们)?

我正在考虑 Ben 的 Alman BBQ 插件,但是 (1) 对于这样简单的任务来说,它看起来太复杂了,(2) 不确定如何使用没有值的参数(page1、page2 等)。

javascript jquery jquery-bbq

3
推荐指数
1
解决办法
7371
查看次数

如何使用jQuery隐藏div?

我用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为隐藏.我该怎么做?

jquery

3
推荐指数
2
解决办法
6579
查看次数

使用get_by_key_name从GAE数据存储中只提取一个字段是否正确?

这是我做的:

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

google-app-engine google-cloud-datastore

3
推荐指数
1
解决办法
240
查看次数

如何构建电影数据库和用户选择?

我想创建电影数据库,用户可以在其中标记他/她观看和喜欢的电影:

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)

google-app-engine app-engine-ndb google-cloud-datastore

3
推荐指数
1
解决办法
853
查看次数

如何使用urlfetch获取所有cookie?

根据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呢?

python cookies google-app-engine urlfetch

3
推荐指数
1
解决办法
1667
查看次数

如何从django模板中删除所有html标签?

我想用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

python django google-app-engine django-templates

3
推荐指数
1
解决办法
2598
查看次数

如何使用链接制作可滚动文本?

我使用以下代码使文本视图可滚动:

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)

它分别很好用.但我应该如何一起使用它?

android scroll hyperlink textview

3
推荐指数
1
解决办法
497
查看次数

如何解码cp1252字符串?

我正在用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-8Zåìôèðà通过更改编码(如)来将值转换为正确的值CP1252 ? CP1251

我应该怎么做才能Z??????mp3artist_v1.encode('cp1252').decode('cp1251')效果很好,但我怎么能自动理解可能的编码(仅3编码是可能的- ,cp1251cp1252utf-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)

但这无济于事,因为我应该先使用一个字符集进行编码,然后再使用另一个字符集进行解码。

python unicode encoding python-2.7 eyed3

3
推荐指数
1
解决办法
1万
查看次数