小编use*_*563的帖子

在html模板中打印appengine模型实体id

以下是我拥有的简单数据库模型:

class Notes(db.Model):
  text = db.StringProperty(multiline=True)
  date = db.DateTimeProperty(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

现在在url处理程序中,我将所有注释发送到模板,如下所示:

class MainPage(webapp2.RequestHandler):
  def get(self):
    notes = Notes.all()
    self.render_template("index.html", {'notes':notes})
Run Code Online (Sandbox Code Playgroud)

在我使用jinja2模板引擎的模板中,我希望id打印每个音符,以便我可以嵌入编辑链接,有点像这样:

{% for note in notes %}
<p>  
 {{ note.text }} <br>
 {{ note.date }} <br>
 (<a href ="edit/{{note.key.id}}">edit </a>)
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但麻烦的是,我没有看到任何打印,代替note.key.id 按照此处 的文档,key类代表数据库实体的唯一键id,它有一个方法,它是一个数值.对于我想要的音符集的单个id音符.

如果我使用django模板引擎我得到{{ notes.key.id }}打印的值,但jinja2我没有看到它.

我怎样才能做到这一点?

python google-app-engine jinja2 webapp2

5
推荐指数
1
解决办法
1143
查看次数

限制django dumpdata中的固定装置数量

我们的一台服务器拥有4 GB的数据。但是到目前为止,我只对填充灯具的少量数据感兴趣。转储数据的一种简便方法是:

 python manage.py dumpdata --indent=4 > shipping_fixture.json
Run Code Online (Sandbox Code Playgroud)

但是这样做的麻烦是它将所有数据转储到数据库中。在测试中使用如此大量的数据没有任何意义。有什么办法可以限制我的数据量,而这并不会增加我的负担,而我下载的数据本身就是完整的。

django

5
推荐指数
1
解决办法
2226
查看次数

使用django的骨干j有什么优势

我的问题很简单:目前我使用的堆栈是django + coffeescript.

耦合django,骨干js是个好主意吗?它有什么优势?任何人都可以带我了解利弊.

PS:我知道骨干js是MVC.

django coffeescript backbone.js

4
推荐指数
1
解决办法
5708
查看次数

ndb基于KeyProperty实例查询模型

我有一个简单的ndb模型如下:

class TaskList(ndb.Model):
    title = ndb.StringProperty()
    description = ndb.TextProperty()
    priority = ndb.IntegerProperty()


class UserProfile(ndb.Model):
    user = ndb.UserProperty()
    tasks = ndb.KeyProperty(TaskList)
Run Code Online (Sandbox Code Playgroud)

众所周知,TaskList对象将具有Entity Kind Entity KeyID.鉴于ID为7.我可以很好地获得ID为7的对象,如下所示:

task = ndb.Key(TaskList, 7).get()
Run Code Online (Sandbox Code Playgroud)

但是我如何获得具有任务ID 7的用户?

我试过了:

tsk = ndb.Key(TaskList, 7).get() 
user = UserProfile.query(UserProfile.tasks  == tsk.key)
Run Code Online (Sandbox Code Playgroud)

它有效,但有更好的方法吗?

google-app-engine app-engine-ndb

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

获取python/webapp2中的referer url以获取发布请求

我想获取已将请求发送到服务器的referer url.我在appengine上使用webapp2框架.

当我做:

def post(self, slug):
    print self.request 
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

OST /first/person/ HTTP/1.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Language: en-US,en;q=0.8 Cache-Control: max-age=0 Connection: keep-alive Content-Length: 43 Content-Type: application/x-www-form-urlencoded Content_Length: 43 Content_Type: application/x-www-form-urlencoded Cookie: djdt=hide; csrftoken=09f29b2bfe9f51f16581bab7fe7c6f38; sessionid=49b995d954eae8d613cedc3f4e92a796 Host: 127.0.0.1:8080 Origin: http://127.0.0.1:8080 Referer: http://127.0.0.1:8080/person/1/ 
Run Code Online (Sandbox Code Playgroud)

这是清楚可见的 Referer: http://127.0.0.1:8080/person/1/

我只对引用者感兴趣,因此我试过:

referer = self.request.headers['Referer']
            print referer
Run Code Online (Sandbox Code Playgroud)

它给出了输出:

False Status: 200 Content-Type: text/html; charset=utf-8 Content-Length: 0 Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)

获得的一种方法是根据请求进行字符串处理,但我相信会有更标准的东西.

python google-app-engine webapp2

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

ndb模型appengine的模型表格(djangoforms不适合我)

我正在使用webapp2,ndb模型.
我试图使用django模型形式与ndb模型.以下是我的设置中的相关部分:

app.yaml中:

libraries:
- name: webapp2
  version: "2.5.1"
- name: jinja2
  version: latest
- name: markupsafe                                                              
  version: latest
- name: django
  version: 1.3
Run Code Online (Sandbox Code Playgroud)

Models.py:

class SubTask(ndb.Model):

    task = ndb.StructuredProperty(TaskList)
    description = ndb.TextProperty()
    start_time = ndb.DateTimeProperty()
    end_time = ndb.DateTimeProperty()
Run Code Online (Sandbox Code Playgroud)

Forms.py:

from django.forms import ModelForm
from models import TaskList, TaskCategory, SubTask

class SubTaskForm(ModelForm):
    class Meta:
        model = SubTask
Run Code Online (Sandbox Code Playgroud)

处理器:

class CreateSubTask(BaseHandler):
    def get(self):
        self.render_template('index.html', {'form':SubTaskForm})

app = webapp2.WSGIApplication([('/', IndexPage),
                               ('/subtask', CreateSubTask), ],
                              debug=True)
Run Code Online (Sandbox Code Playgroud)

我得到的错误是: AttributeError:类型对象'SubTask'没有属性'_meta'

我的问题:有没有办法可以将django模型表格与ndb一起使用,或者如果我犯了错误是什么?如果不是django modelforms,ndb模型是否可以与WTForms一起使用?

下面是堆栈跟踪:

ERROR    2012-06-23 …
Run Code Online (Sandbox Code Playgroud)

python django google-app-engine django-forms app-engine-ndb

2
推荐指数
1
解决办法
1138
查看次数

基于<p>(段落标记)之一对jquery div进行排序

以下是我在模板中的重复html结构:

<div class="mystyle" data-id= "11002">
  <div class="style1-header"><h6>Change Status of Task</h6></div>
  <p class="style1-content">Seriously Change Status of Task</p>
  <p class="style2-content" style="visibility:hidden">12</p>
</div>
Run Code Online (Sandbox Code Playgroud)

以上是在我的html模板中不断重复的html结构.我希望根据12上述情况中的数字对这些内容进行排序.我怎么能用jquery做到这一点.该小提琴可以在这里找到.

javascript jquery

2
推荐指数
1
解决办法
651
查看次数

jQuery val()方法不起作用

我想在我的一个HTML表单中读取在文本框中输入的值,为此我尝试了jQuery val()方法,但它不起作用,任何想法为什么?

HTML:

<form method="POST" id="payment-form">
   <p>
      <label class="card-number" for="txt_cardno"><span>Card Number:</span></label>
      <input type="text" size="20" autocomplete="off" class="card-number" id="txt_cardno" name="cardno" />
   </p>
   <p class="submit submit-button"><a class="btn" href="#">Charge Card</a><br><a class="btn" href="#" onClick="return false">Go Back</a></p>
   <div class="clear"></div>
</form>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

$(document).ready(function() {
    $(".submit").live("click", function(e) {
        e.preventDefault();
        var card_num = $('.card-number').val();
        alert(card_num);
    });
});
Run Code Online (Sandbox Code Playgroud)

jsfiddle是http://jsfiddle.net/74neK/1/

javascript jquery

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

将两个争论传递给lambda python

我想在python中做一个简单的列表操作:这是我使用两个for循环的方式:

lst = []
coins = [1, 2, 5, 10, 20, 50, 100, 200]
maxi = 200
lst = lst + [0]*(maxi+5)
lst[0] = 1

for c in coins:
    for i in range(c, maxi+2):
        lst[i] += lst[i-c]
Run Code Online (Sandbox Code Playgroud)

上面的代码给了我想要的结果,现在我尝试将两个线路循环转换成一个单行

add = lambda i, c: lst[i] += lst[i-c]
[add(i, c) for i in range(c, maxi+1) for c in coins]
Run Code Online (Sandbox Code Playgroud)

但我得到一个无效的语法错误,我怎么能传递两个变量c,并i以拉姆达,然后控制在两个索引列表.

这是一种更加pythonic的方式吗?

谁能建议更短的代码?

我只想使用列表理解.如何使用列表理解实现上述代码?

python

0
推荐指数
1
解决办法
1887
查看次数