我正在尝试学习django,所以当我有一个当前的解决方案时,我不确定它是否遵循django中的最佳实践.我想在我的网站上显示来自网络API的信息.假设api url如下:
http://api.example.com/books?author=edwards&year=2009
Run Code Online (Sandbox Code Playgroud)
Thsis将返回Edwards于2009年撰写的书籍清单.返回以下格式:
{'results':
[
{
'title':'Book 1',
'Author':'Edwards Man',
'Year':2009
},
{
'title':'Book 2',
'Author':'Edwards Man',
'Year':2009}
]
}
Run Code Online (Sandbox Code Playgroud)
目前我正在使用我的视图文件中的API,如下所示:
class BooksPage(generic.TemplateView):
def get(self,request):
r = requests.get('http://api.example.com/books?author=edwards&year=2009')
books = r.json()
books_list = {'books':books['results']}
return render(request,'books.html',books_list)
Run Code Online (Sandbox Code Playgroud)
通常,我们从models.py文件中的数据库中获取数据,但我不确定是否应该在models.py或views.py中获取此API数据.如果它应该在models.py中,有人可以举例说明如何做到这一点吗?我特意为stackoverflow编写了上面的例子,所以任何bug都纯粹是在这里编写它的结果.
我正在尝试使用golang将数据插入到mysql数据库中.在我的值采用空字符串的情况下,我想插入一个null.如何调整以下内容以插入空值而不是空字符串?谢谢.
_, err := m.Db.Exec(`INSERT INTO
visitor_events
(type,
info,
url_path,
visitor_id,
created_at,
domain)
VALUES
(?, ?, ?, ?, ?, ?)`,
m.SaveEventType(ve), ve.EventInfo, m.SaveURLPath(ve.UrlPath), ve.VisitorId, time.Now().UTC(), ve.Domain)
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习OctoberCMS,我对扩展插件的完整过程感到困惑.我根据截屏视频(https://vimeo.com/108040919)扩展了用户插件.最终,我正在寻找创建一个名为"category"的新领域,该领域将存储用户类别.在新页面上,我有以下表单,我试图用它来仅根据他们的电子邮件地址注册新用户.根据他们注册的页面填充"类别",并且应自动生成密码,以便用户在通过电子邮件激活链接确认其帐户时进行设置.我的插件名为"Profile".
我的plugin.php文件如下所示:
<?php namespace Sser\Profile;
use System\Classes\PluginBase;
use RainLab\User\Models\User as UserModel;
use RainLab\User\Controllers\Users as UsersController;
use Sser\Profile\Models\Profile as ProfileModel;
/**
* Profile Plugin Information File
*/
class Plugin extends PluginBase
{
/**
* Returns information about this plugin.
*
* @return array
*/
public function pluginDetails()
{
return [
'name' => 'Profile',
'description' => 'Handles user demographic information',
'author' => '',
'icon' => 'icon-leaf'
];
}
public function boot()
{
UserModel::extend(function($model){
$model->hasOne['profile'] = ['Sser\Profile\Models\Profile'];
});
// $user->profile->zip
UserModel::deleting(function($user) …Run Code Online (Sandbox Code Playgroud) 我一直在审查10月CMS路由的文档(https://octobercms.com/docs/plugin/registration#routing-initialization),但我认为我遗漏了一些东西.我有一个名为'deals'的页面,它提供了一些基本信息以及一个插件(称为'deals')组件.该页面通常出现在网址上:
http://www.example.com/deals
Run Code Online (Sandbox Code Playgroud)
但是,我想创建一个路由,以便有人访问该网址时:
http://www.example.com/deals2
Run Code Online (Sandbox Code Playgroud)
它会自动将它们路由回去
http://www.example.com/deals
Run Code Online (Sandbox Code Playgroud)
我知道我应该在我的插件目录中创建一个routes.php文件.但是,当我尝试使用时
Route::get('/deals2', function()
{
return View::make('deals');
});
Run Code Online (Sandbox Code Playgroud)
它抱怨它无法找到"交易"视图.我究竟做错了什么?
此外,我如何路由它以便我的主页
http://www.example.com
Run Code Online (Sandbox Code Playgroud)
会路由到
http://www.example.com/deals
Run Code Online (Sandbox Code Playgroud) 我有一个OctoberCMS网站,我试图在可折叠列表中隐藏侧边栏,以便在移动设备上查看时,列表项将被折叠.当不在移动设备上时,我正在寻找它,如下例所示:
http://codepen.io/anon/pen/GoqPJj
代码如下:
<div class="container">
<div class="row">
<div class="col s12 m6">
<ul class="collapsible" data-collapsible="accordion">
<li>
<div class="collapsible-header active"><i class="material-icons">filter_drama</i>First</div>
<div class="collapsible-body">
<p>Lorem ipsum dolor sit amet.</p>
</div>
</li>
</ul>
</div>
<div class="col s12 m6">
This is the main page content. Here is some more content, and here is some even more content. It never seems to end as I add random text. Just one more sentence to make it a bit more complete.
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何编辑上面的例子来产生预期的结果?
使用Python我一直得到一个
(1205, 'Lock wait timeout exceeded; try restarting transaction')
Run Code Online (Sandbox Code Playgroud)
每当我尝试插入特定表时出错.但是,当我尝试直接从MySQL控制台插入时,它工作得很好.展望着
SHOW FULL PROCESSLIST
Run Code Online (Sandbox Code Playgroud)
在数据库上显示没有其他活动查询.由于这是一个没有附加实时应用程序的开发数据库,我无法想象任何问题.但是,它是在托管我们的生产数据库的服务器上提供的,因此我强烈希望尽可能不进行重置.关于如何调试这个的任何建议?
注意 如果我使用SHOW FULL PROCESSLIST查看正在对数据库运行的查询,最终会因上述消息而失败,然后从MySQL控制台手动插入它,它会按预期工作.
编辑 以下是查询的示例:
INSERT INTO deals (user_ID, store_ID, storeChain_ID, title, dealSaving,
dealDisclaimer, restriction, dealImage, dealURL, submit_ID, userProvider_ID,
createDate, createDateTime, expirationDate, expirationDateTime, ZIP, STATE,
city, businessType, DealType_ID, IP, rating, popular, dealSearchData, tag,
submitName, provider_dealID)
VALUES (NULL,
2651049,
NULL,
'Toronto East Community Arts Program',
'Three-Week Photography Workshop',
NULL,
NULL,
'https://a1.image.net/imgs/8423535b-bd3b-4e1e-afee-ab2869970a4c/700_q60.jpg',
'https://www.exmples.com/deals/1336374',
111,
1,
'2015-11-12',
'2015-11-12 10:01:58.282826',
'2015-11-17 09:59:59',
'2015-11-17 23:59:00',
'M4M 1K7',
'ON', …Run Code Online (Sandbox Code Playgroud) 我一直在为新的 Python Gmail API 更新一些脚本。但是,我对如何更新以下内容感到困惑,以便我只检索昨天的消息。谁能告诉我如何做到这一点?
我目前能看到的唯一方法是遍历所有消息,只解析那些在正确时间范围内具有时代的消息。但是,如果我有 1000 条消息,这似乎效率极低。必须有一种更有效的方法来做到这一点。
from apiclient import discovery
import oauth2client
from oauth2client import client
from oauth2client import tools
import os
import httplib2
import email
from apiclient.http import BatchHttpRequest
import base64
from bs4 import BeautifulSoup
import re
import datetime
try:
import argparse
flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
flags = None
SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'
CLIENT_SECRET_FILE = '/Users/sokser/Downloads/client_secret.json'
APPLICATION_NAME = 'Gmail API Python Quickstart'
def get_credentials():
"""Gets valid user credentials from storage.
If nothing has been stored, or if …Run Code Online (Sandbox Code Playgroud) 我试图在本地HTML字符串上运行Selenium但似乎无法找到有关如何执行此操作的任何文档.我从电子邮件API中检索HTML源代码,因此Selenium无法直接解析它.是否有改变以下内容,以便它将读取下面的HTML字符串:
用于远程访问的Python代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_class_name("q")
Run Code Online (Sandbox Code Playgroud)
本地HTML代码:
s = "<body>
<p>This is a test</p>
<p class="q">This is a second test</p>
</body>"
Run Code Online (Sandbox Code Playgroud) 我在PHP中有一个多维数组采用以下形式:
$data = array(
array('spot'=>1,'name'=>'item_1'),
array('spot'=>2,'name'=>'item_2'),
array('spot'=>1,'name'=>'item_3'),
);
Run Code Online (Sandbox Code Playgroud)
如果多个数组元素包含"spot"数字的副本,我会想要随机选择一个,并取消设置具有相同"spot"值的所有其他元素.执行此操作的最有效方法是什么?结果数组看起来像:
$data = array(
array('spot'=>2,'name'=>'item_2'),
array('spot'=>1,'name'=>'item_3'),
);
Run Code Online (Sandbox Code Playgroud) 我正在尝试启用Opcache,但是由于某些原因,在编辑php.ini文件并重新启动apache(甚至重新启动服务器)之后,仍然没有启用它。运行测试,我可以看到php文件的位置:
Loaded Configuration File /etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)
在该文件中,我添加了:
zend_extension=/usr/lib/php5/20121212/opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
Run Code Online (Sandbox Code Playgroud)
zend扩展的位置由locate opcache.so定义。这没有用。然后,我注意到php正在加载其他文件/etc/php5/apache2/conf.d/05-opcache.ini。在该文件中,它看起来像:
; configuration for php ZendOpcache module
; priority=05
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
Run Code Online (Sandbox Code Playgroud)
但是,重新启动apache后仍将无法启用。以下是我的phpinfo()输出:
Opcode Caching Disabled
Run Code Online (Sandbox Code Playgroud)
我如何才能启用它?