以下是我拥有的简单数据库模型:
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我没有看到它.
我怎样才能做到这一点?
我们的一台服务器拥有4 GB的数据。但是到目前为止,我只对填充灯具的少量数据感兴趣。转储数据的一种简便方法是:
python manage.py dumpdata --indent=4 > shipping_fixture.json
Run Code Online (Sandbox Code Playgroud)
但是这样做的麻烦是它将所有数据转储到数据库中。在测试中使用如此大量的数据没有任何意义。有什么办法可以限制我的数据量,而这并不会增加我的负担,而我下载的数据本身就是完整的。
我的问题很简单:目前我使用的堆栈是django + coffeescript.
耦合django,骨干js是个好主意吗?它有什么优势?任何人都可以带我了解利弊.
PS:我知道骨干js是MVC.
我有一个简单的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 Key和ID.鉴于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)
它有效,但有更好的方法吗?
我想获取已将请求发送到服务器的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)
获得的一种方法是根据请求进行字符串处理,但我相信会有更标准的东西.
我正在使用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) 以下是我在模板中的重复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做到这一点.该小提琴可以在这里找到.
我想在我的一个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/
我想在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 ×4
django ×3
javascript ×2
jquery ×2
webapp2 ×2
backbone.js ×1
coffeescript ×1
django-forms ×1
jinja2 ×1