当您返回一个HttpResponse对象时,render_to_response您可以提供一个模板,它会使用该模板并填写{{ variables }}您在模板中设置的所有内容。
如果我想HttpResponse手动构建我的对象,是否仍然可以在我的模板目录中使用我的模板之一?
我想将对象的特定字段分配给另一个context变量。对于基于函数的视图,这只是声明键:值对的问题:
context = {
'title': my_object.nick_name
}
Run Code Online (Sandbox Code Playgroud)
现在在我的模板中,我可以使用该变量{{ title }},它将显示对象的字段nick_name。
我如何使用基于类的视图实现同样的效果?
例如,我有这个简单的 DetailView:
class MyObjDetail(DetailView):
model = MyObject
def get_context_data(self, **kwargs):
context = super(MyObjectDetail, self).get_context_data(**kwargs)
context['title'] = ????? <--- right here
context['cancel'] = reverse_lazy('my_objs:my_objs_list')
return context
Run Code Online (Sandbox Code Playgroud)
我想将变量分配{{ title }}为使用nick_name此类基于视图显示的对象的字段。我该怎么做呢?
我是VueJS的新手,所以这可能是一个非常简单的问题,但是这里有.
我正在调用我的API来获取一组记录.我想在一个简单的表中显示这些记录,但是我希望能够单击该行的最后一个单元格中的链接并将其发送到新的URL - 该对象的详细信息的URL.
这是我到目前为止所拥有的:
Vue Stuff:
var vm = new Vue({
el: '#league-table',
data: {
leagues: [],
apilink: '/api/leagues/',
},
mounted: function() {
this.getLeagues();
},
methods: {
getLeagues: function() {
var self = this
$.get('/api/leagues/', function(data){
$.each(data, function(index, obj) {
self.leagues.push(obj)
});
});
},
sayConsole: function() {
console.log("OUTPUT here....")
}
}
});
Run Code Online (Sandbox Code Playgroud)
HTML资料:
<div class='card__content'>
<div id='league-table' class='table-responsive'>
<table class='table table--lg team-roster-table table-hover'>
<thead>
<th class='team-roster-table__name'>ID</th>
<th class='team-roster-table__name'>Name</th>
<th class='team-roster-table__name'>Characters</th>
<th></th>
</thead>
<tbody>
<tr v-for='league in leagues'>
<td class='team-roster-table__number'>{{ …Run Code Online (Sandbox Code Playgroud) 我的模型有超过25个字段.我想创建一个表单来只编辑其中一个字段.因此我这样做了:
class My_Model_Form(ModelForm):
class Meta:
model = myModel
fields = ('myField')
Run Code Online (Sandbox Code Playgroud)
这给了我错误Unknown field(s) (i, b, l, o, T) specified for My_Model_Form.所以,我把上面改为:
class My_Model_Form(ModelForm):
class Meta:
model = myModel
field = ('myField')
Run Code Online (Sandbox Code Playgroud)
(I除去小号从fields).这样(但在runserver命令运行中),该表单现在包括模型中的所有字段myModel.我可以获得所需的单字段表单的唯一方法是使用exclude关键字,并列出除我想要的字段之外的所有字段.这看起来很荒谬.
我是不是错了.有没有更好/正确的方法来做到这一点?
谢谢!
我有一个只有三个字段的内联formset:
class Estimate_Product_Details(models.Model):
proposalID = models.ForeignKey(Estimate_Construction, verbose_name='Proposal ID')
CID = models.ForeignKey(Product, verbose_name = 'CID')
qty = models.DecimalField(max_digits = 7, decimal_places = 2, verbose_name = 'Quantity')
def __unicode__(self):
return u'%s -- %s' % (self.proposalID, self.CID)
Run Code Online (Sandbox Code Playgroud)
然后我从该模型创建一个表单:
class Product_Form(ModelForm):
class Meta:
model = Estimate_Product_Details
fields = ('CID', 'qty')
widgets = {
'qty' : forms.TextInput(attrs={'size':30})
}
Run Code Online (Sandbox Code Playgroud)
我的目标是让qty输入字段非常小(我有30个用于测试).但是,当我通过内联formset渲染此表单时,该属性根本没有设置.这是在我的视图中创建formset:
pFormSet = inlineformset_factory(Estimate_Construction, Estimate_Product_Details, form = Product_Form)
Run Code Online (Sandbox Code Playgroud)
我哪里错了?为什么qty场地不会变大?
我正在尝试创建一个包含代表联系人的数据行的表 - 人员和公司联系人的混合.我希望每一行都是"可点击的",以便在点击时,提取该联系人的表单进行编辑.要做到这一点,我有这样的事情:
<tr onclick="window.location.href='{% url my.django.view %}'">...
Run Code Online (Sandbox Code Playgroud)
你会注意到上面有两个级别的引号:一个双"等于之后,然后一个'来封装django模板标签.有两种类型的联系人:公司和人.我有我的urls.py设置来处理这个,具有以下内容:
(r'^contact-details/(?P<cType>C)/(?P<cid>N)/$', contact_details),
(r'^contact-details/(?P<cType>P)/(?P<cid>N)/$', contact_details),
(r'^contact-details/(?P<cType>C)/(?P<cid>.*)/$', contact_details),
(r'^contact-details/(?P<cType>P)/(?P<cid>.*)/$', contact_details),
Run Code Online (Sandbox Code Playgroud)
所以,有了上面的内容,我有两个新联系人的网址(由cTypeC =公司或cTypeP = Person 区分),然后是现有联系人的两个网址(cid用于记录的主键).
列在所有联系人列表中的行中的链接如下所示:
<tr onclick="window.location.href='{% url cpm.contacts.views.contact_details 'P' c.pk %}'">
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我无法将"P"或"C"传递到链接中,因为它会导致第三级引号,从而将所有引号分开.我只是不知道如何逃避P或C周围的第三级报价.
有任何想法吗?
我正在考虑为我的django Web应用程序创建一个日志系统.Web应用程序的使用非常全面(涵盖了业务流程的所有方面),因此我想跟踪发生的每个事件.具体来说,我想记录每个运行的视图而不仅仅是"主要"视图,并且可能记录视图中执行的内容.
当我处于测井系统的"想法"阶段时,我很快就遇到了一些问题,让我不确定如何继续.以下是我的主要问题:
这是我在这一点上的主要想法.关于这方面的任何建议?
谢谢
刚刚完成一些CBV的工作,并想知道这是不好的风格.通常,您views.py在urls.py该视图中有一个类,在该视图中有一个URL .就像是:
views.py
from django.views.generic.list import ListView
from project.models import Contact
class ContactList(ListView):
model = Contact
Run Code Online (Sandbox Code Playgroud)
urls.py
from django.views.generic.list import ListView
from project.views import ContactList
urlpatterns = [
url(r'contacts/$', ContactList.as_view()),
]
Run Code Online (Sandbox Code Playgroud)
然后是一个显示数据的模板.
但是,如何完全跳过视图代码并在urls.py文件中完成所有操作:
from django.views.generic.list import ListView
from project.models import Contact
urlpatterns = [
url(r'contacts/$', ListView.as_view(model=Contact)),
]
Run Code Online (Sandbox Code Playgroud)
将它全部分组到urls.py文件中的样式是不是很糟糕?我的意思是,它摆脱了多余的代码,views.py所以不是那么好吗?或者这是以牺牲清晰度为代价的减少?
我有一个nav组件,只需要在localStorage. 当该令牌从删除localStorage的nav组件需要注意的是变化和隐藏自身。
解决这个问题的最佳方法是什么?
我一直在研究复式记账系统的实现(特别是使用 Django 作为数据库后端)。我难以理解的是“分类账”和“总账”从会计世界到数据库/软件世界的翻译。
在会计中,我们可能会看到类似的内容:
Sales Sub-Journal:
---------------------------------------------------------------
Date Description Amount Acct Balance
---------------------------------------------------------------
Jan 1 Cust. A Sale 500.00 AR 500.00
Jan 15 Cust. B Sale 300.00 AR 800.00
General Journal:
---------------------------------------------------------------
Date Description Acct Debit Credit
---------------------------------------------------------------
Jan 15 Sales for Jan AR 800.00
Sales 800.00
Run Code Online (Sandbox Code Playgroud)
实际上,子分类帐通过单个日记帐分录复制到总分类帐。
我很难理解的是从数据库角度来看分类账和总账的目的。难道只有两个普通的日记条目就不能将上述三个条目记录在数据库中吗?这会消除重复的数据(明细账中记录的 800 美元和普通日记账分录中也记录的 800 美元)?
General Journal Entries:
---------------------------------------------------------------
Date Description Acct Debit Credit
---------------------------------------------------------------
Jan 1 Cust. A Sale AR 500.00
Sales 500.00
Jan 15 Cust. B Sale AR …Run Code Online (Sandbox Code Playgroud) 好的 - 我已经和Django合作了几个月了,并且遇到了一个奇怪的问题.要设置它,这是我的webapp结构.
主要的Django项目被调用cpm.我在cpm文件夹中有一堆django应用程序.在每个应用程序中,我有我的models.py文件.
现在,当我想从其他应用程序创建/使用模型时,我会做类似的事情:
from cpm.products.models import *
Run Code Online (Sandbox Code Playgroud)
假设有一个名为app的应用程序products.最近,我开始收到一些错误,比如,cannot import XYZ from products.经过多次搜索,我改变了这条线:
from cpm.products.models import *
Run Code Online (Sandbox Code Playgroud)
至
from products.models import *
Run Code Online (Sandbox Code Playgroud)
我刚刚丢弃了cpm.部件,现在它可以工作了.
有人能告诉我为什么会这样吗?它似乎只发生在我的部分应用程序上(我在CPM项目中有一堆).我希望确保我的语法准确,因为我向前迈进.
谢谢!
我使用网格系统进行网页布局,就像Grid 960布局一样.我有一堆预定义的类用于所有网格宽度.当我想要一个div宽度时,我只是这样做:
<div class="grid_4">
...
</div>
Run Code Online (Sandbox Code Playgroud)
但是,对于我div的一些我添加边框,所以我创建了一个自定义边框类,我添加到div我想要边框的那些.
.right-border {
border-right: 1px solid #e1e1e1;
}
<div class="grid_4 right-border">
....
</div>
Run Code Online (Sandbox Code Playgroud)
问题是当我添加边框时,网格系统会失败,因为页面上没有足够的空间来容纳所有divs(因为其中一个有边框).我可以手动调整每个div我添加边框,但我想要一个更清洁的解决方案,因为每个网格的每个宽度是不同的(取决于我使用的网格类).
有没有办法获得当前div的宽度,简单地减去1给那些div有类的right-border?我认为这可能只适用于jQuery,但也许我不知道的一些CSS魔法会实现这一点.
有任何想法吗?
django ×8
django-forms ×2
html ×2
python ×2
accounting ×1
css ×1
database ×1
django-views ×1
import ×1
jquery ×1
logging ×1
vue.js ×1
vuejs2 ×1