我正在编写一个使用我创建的REST API的Django应用程序.目的是使用Web应用程序证明api用例.在我看来,我因此使用python-requests库调用api,如下所示:
def my_view_method(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
data = form.cleaned_data
data_to_post = {
'fieldA': data.get('fieldA_in_form'),
'fieldB': data.get('fieldB_in_form'),
}
post_url = "http://%s/%s/" % (request.get_host(), 'entries')
logger.info("request api url: "+ post_url)
r = requests.post(post_url, data=data_to_post)
return HttpResponseRedirect('/')
else:
form = MyForm()
return render(request, 'myview.html', { 'form': form })
Run Code Online (Sandbox Code Playgroud)
我已经使用单元测试验证了使用有效数据POST到/ entries /会导致正确的数据库更新.
url = '/entries/'
#verify initial db state
data = { 'fieldA': value1, 'fieldB': value2 }
response = self.client.post(url, data, format='json')
# verify db was updated …Run Code Online (Sandbox Code Playgroud) 我有一个简单的UICollectionView.第一次加载视图时,将调用cellForItemAtIndexPath三次,我看到三个单元格.
- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section {
NSUInteger count = ([self.results count] > 0 ? [self.results count] : 3);
NSLog(@"count %lu", (unsigned long)count);
return count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"cellForItemAtIndexPath called");
UICollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"TasteCell" forIndexPath:indexPath];
cell.backgroundColor = [UIColor whiteColor];
return cell;
}
Run Code Online (Sandbox Code Playgroud)
但是,后来的self.results变成了一个包含5个元素的数组,我称之为:
[self.collectionView reloadData];
Run Code Online (Sandbox Code Playgroud)
当发生这种情况时,再次调用numberOfItemsInSection并且其中的"count"日志语句显示它返回5.但是,这次,从不调用cellForItemAtIndexPath,并且UI仍显示第一次加载的三个单元格.
为什么即使计数已更改,单元格数量仍未更新?
我的rails应用程序有3个型号.小道,地区和特色.我可以在lib/tasks目录中很好地与这些模型进行交互.我用anemone来抓取并填充数据库.我在模型上调用的示例:
Trail.find_or_initialize_by_title(detail_title)
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试编写一个使用该模型的控制器.
class TrailController < ApplicationController
def index
render :json => Trail.all
end
end
Run Code Online (Sandbox Code Playgroud)
现在,如果我打开rails控制台并尝试app.get('trail/index')获得500返回代码,我在我的内容中看到以下内容development.log
SystemStackError(堆栈级别太深):
app/controllers/trail_controller.rb:23:在`index'中
所以我显然会引起一些无限的递归.第23行对应于索引方法的主体.我在我的应用程序中尝试过其他模型:功能和区域,结果是一样的.有人可以告诉我这里我做错了什么,或者我怎么能得到更多的追踪来弄清楚究竟什么是无限递归?
我的模型非常简单:
class Feature < ActiveRecord::Base
attr_accessible :name
has_and_belongs_to_many :trails
validates :name, :presence => true
end
class Region < ActiveRecord::Base
attr_accessible :hash_key, :name
has_many :trails
validates :hash_key, :name, :presence => true
end
class Trail < ActiveRecord::Base
# attr_accessible :title, :body
has_and_belongs_to_many :features
validates :title, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
看来这是由searchlogic gem引起的.我在我的Gemfile中有这个:
gem 'rd_searchlogic', :require => 'searchlogic', :git => 'git://github.com/railsdog/searchlogic.|~
Run Code Online (Sandbox Code Playgroud)
当我注释掉那一行时,运行bundle …
我有以下使用django-uuidfield作为主键的模型类:
class FODType(models.Model):
id = UUIDField(auto=True, primary_key=True)
name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)
从管理员,我尝试为此模型创建一个条目,但我收到以下错误:
/ admin// Bleary/fodtype/add /无效输入语法为uuid:""LINE 1:... WHERE"Bleary_fodtype"."id"=''
UUIDField如果没有指定值,则将模型设置为自动创建一个值,但在这种情况下,将指定空字符串作为保存主键的值.由于主键具有值,因此它尝试进行更新而不是插入并失败.
我在这做错了什么?
我想在我的cpp文件中的多个位置使用字符串常量.我应该使用std :: string还是char []?
static const std::string kConstantString = "ConstantStringValue";
static const char kConstantString[] = "ConstantStringValue";
Run Code Online (Sandbox Code Playgroud)
我被告知更喜欢后者,因为它"避免静态分配".char数组是否也必须静态分配?
django ×2
python ×2
arrays ×1
c++ ×1
ios ×1
objective-c ×1
ruby ×1
searchlogic ×1
static ×1
uuid ×1