我正在尝试为网页添加一些基本的动态功能.如何在客户端使用JavaScript通过服务器端的django访问数据库信息?
我觉得在网页上调用django视图(或其他东西)的JavaScript函数应该很容易,而django视图会向JavaScript函数返回一个值.我不希望JavaScript本身连接到数据库,因为这似乎环绕django(对我来说,这似乎是不正确的).
此外,我希望能够在一个页面上通过JavaScript执行多个数据库请求.一个例子是用于创建发票的网页.发票的每个附加行都需要对数据库进行新查询.然后,根据添加到发票中的产品,需要额外的查询来确定产品的价格.我得到的是动态完成的一个页面内对数据库的多个查询.
基本上,我希望django进行数据库搜索并将信息传递给JavaScript.
TL;DR(简短概要):
我在自己的项目中重新创建了管理“添加”按钮。但是,当我在父表单上点击“保存”时,它无法识别新的选择元素。
整个故事:
我在我自己的项目中使用了该功能......几乎。我需要帮助弄清楚最后一步。现在,我有一个“+”按钮,单击它,会出现一个弹出窗口,我添加一个新对象,点击保存,弹出窗口关闭,该新项目现在位于我的选择框中并被选中 - 就像管理员一样页。但是,当我在此父表单上单击“保存”时,出现错误,表明我选择了不在列表中的项目。当然,由于页面已重新加载,我的新项目已成为列表的一部分,我只需再次单击“保存”即可。当然,我需要它来节省第一次!
基本设置是调用我的父模型System并调用外键模型Zone。该Zone模型列出了系统有多少个区域(1 个区域、2 个区域、10 个区域等...)
好的,一些代码:
父表单模板中的“添加”链接:
<a href="/systems/zones/new/?popup=1" id="add_id_numZones" onclick="return showAddPopup(this);">Add</a>
在我New_Zone看来,保存新区域后,我检查变量是否popup GET为1,如果是,则返回一个javascript函数。这是视图:
...
if form.is_valid():
f = form.save(commit=False)
pk_value = f.numOfZones
form.save()
obj = Zone_Info.objects.get(numOfZones=pk_value)
if isPopup == "1":
return HttpResponse('<script>opener.closeAddPopup(window, "%s", "%s");</script>' % (escape(pk_value), escape(obj)))
...
Run Code Online (Sandbox Code Playgroud)
这是我的 Javascript(大部分是从管理 javascript 复制的:
function html_unescape(text) {
// Unescape a string that was escaped using django.utils.html.escape.
text = text.replace(/</g, '<');
text = text.replace(/>/g, '>'); …Run Code Online (Sandbox Code Playgroud) 假设我有一个 VueJS 应用程序,它需要用户登录/验证才能使用我的应用程序。如果我然后使用 VuePress 构建文档并将该文档存放在应用程序中,有没有办法可以从应用程序中链接到文档?
例如:
这可能吗?有谁知道如何实现这一目标?
我有几个Django应用程序,都在一个项目目录中.每个应用程序都有一个models.py包含大量模型的文件.我一直在将模型从一个应用程序导入到另一个应用程序,没有任何问题,特别是创建一个带有外键字段的新模型,指向另一个应用程序中的模型.到目前为止没问题.
我决定创建一个新模型.它有4个ForeignKey字段,每个字段指向不同应用程序中的不同模型.直接前进.但是,当我尝试使用south将架构迁移到数据库时,它告诉我它无法导入我的模型.为什么?!
所以,这是我的新模型:
class Action_Tracker(models.Model):
dateOfAction = models.DateField(verbose_name = 'Date of Action')
user = models.CharField(max_length=30, verbose_name = 'Action completed by')
sys = models.ForeignKey(System, verbose_name='For System')
wo = models.ForeignKey(Work_Order, verbose_name='Associated WO', blank=True, null=True)
inv = models.ForeignKey(Invoice, verbose_name = 'Associated Invoice', blank=True, null=True)
subdT = models.ForeignKey(SUBD_Tracker, verbose_name = 'Associated SUBD Tracker', blank=True, null=True)
notes = models.TextField(verbose_name='Notes of Action', blank=True, null=True)
def __unicode__(self):
return u'%s -- %s' % (self.dateOfAction, self.notes)
class Meta:
orering = ['dateOfAction']
Run Code Online (Sandbox Code Playgroud)
在这个models.py …
我的数据库中有客户记录列表。每年,我们都会为每个客户生成一个工作订单。然后,对于每个工单记录,用户应该能够创建特定于工单的注释。然而,并不是所有的工单都需要注释,只是一些。
现在,我不能简单地note向工作订单添加一个字段,因为有时,我们甚至需要在生成工作订单之前创建注释。有时,此注释特定于 2-3 年内不会发生的工作订单。因此,注释和工单必须是独立的,尽管当它们都存在时它们会“找到”彼此。
好的,情况就是这样。我希望用户能够填写一个非常简单的note表单,其中有两个字段:noteYear和note。因此,他们所做的就是选择一年,然后写下笔记。关键是用户不应该能够为同一个客户在同一年创建两个笔记。
我试图通过确保该客户没有该年的注释来验证该注释。我假设这将通过is_valid表单中的自定义方法来实现,但我不知道如何去做。
这是我到目前为止所尝试的(请注意,我知道这是错误的,它不起作用,但这是我迄今为止的尝试):
请注意,这systemID是我的客户记录
我的型号:
class su_note(models.Model):
YEAR_CHOICES = (
('2013', 2013),
('2014', 2014),
('2015', 2015),
('2016', 2016),
('2017', 2017),
('2018', 2018),
('2019', 2019),
('2020', 2020),
('2021', 2021),
('2022', 2022),
('2023', 2023),
)
noteYear = models.CharField(choices = YEAR_CHOICES, max_length = 4, verbose_name = 'Relevant Year')
systemID = models.ForeignKey(System, verbose_name = 'System ID')
note = models.TextField(verbose_name = "Note")
def __unicode__(self):
return u'%s | %s | …Run Code Online (Sandbox Code Playgroud) 我已经启动了一个新的Django 1.8项目,并试图在开发环境中提供静态文件.我很确定我明确地遵循了文档,但它只是不起作用.
Settings.py
STATICFILES_DIR = (
os.path.join(BASE_DIR, 'static/'),
BASE_DIR
)
STATIC_URL = '/static/'
STATIC_ROOT = '/srv/www/cpm2/static/'
Run Code Online (Sandbox Code Playgroud)
urls.py:
from django.conf.urls import include, patterns, url
from django.conf import settings
from django.conf.urls.static import static·
from django.contrib import admin
from django.views.generic import TemplateView
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^test/', TemplateView.as_view(template_name="basics/base.html")),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Run Code Online (Sandbox Code Playgroud)
templates/basics/base.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
{% load staticfiles %}
<link href="{% static 'css/bootstrap.css' %}" rel="stylesheet">
</head>
<body>
<h1>Hello, …Run Code Online (Sandbox Code Playgroud) 在 1.9 中,有一个新form_kwargs 功能允许formset_factory您为formset. 我的问题是,我如何实现同样的目标inlineformset_factory?
执行以下操作不起作用:
/* Pseudo code of my actual models */
class Account(models.Model):
fields here...
class Invoice(models.Model):
fields here...
class InvoiceLineItem(models.Model):
account = ForeignKey(Account)
invoice = ForeignKey(Invoice)
description = CharField
amt = DecimalField
/* === End of Pseudo Code === */
# Real code that fails:
InvoiceLineItemFormset = inlineformset_factory(Invoice, InvoiceLineItem, fields=('description', 'account', 'amt'))
accts = Account.objects.filter(fund__pk = self.kwargs['fpk'])
invoice_line_item_form = InvoiceLineItemFormset(form_kwargs={'account':accts})
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
__init__() got an unexpected keyword argument 'account' …Run Code Online (Sandbox Code Playgroud) 我明白了家商店是以及Vuex的用途,但现在我在想:
“我实际上在商店里放什么?”
我正在建立的SPA处理大量数据。最初,我只是放入“主要”内容。但是,那是错的吗?store实际应否保留SPA的所有数据?如果我在网页上显示数据,那应该流经store吗?
我有一个存储客户端数据的Django应用程序.目前,数据库中只有1,000多个客户端.一年两次,我需要为每个客户打印一份半定制的信件.理想情况下,我希望能够单击按钮/链接,并将整个批次发送到打印机; 我不想为每个字母单击"打印",因为这将是非常耗时的.
我想到的是使用Celery来打印所有文档的过程,但我不知道如何实现.我必须"构建"文档并将其发送到打印机,而无需用户看到这种情况.
我的另一个想法是创建一个包含一页上所有字母的"网页".然后用户可以点击"打印",页面将作为字母集合从打印机中出来.虽然,这看起来很草率.
有任何想法吗?
谢谢
我正在处理即将完成的项目,处理业务的客户信息.在众多变量中,有:main_phone cell_phone和office_phone存储客户的各种电话号码.这些变量在整个项目中使用.
客户要求我们将其显示为Phone 1 Phone 2而Phone 3不是Main Phone Cell Phone和Home Phone.他们想要这种改变的理由是合理的.
我的问题是,您是否会梳理整个项目并更改所有变量名称(项目中的许多位置)或只是更改变量显示给用户的方式(一个位置),而不是基础变量名称本身?
我觉得后一种选择是糟糕的风格,因为变量名称不再解释存储在该变量中的数据.
你的意见?
谢谢
django ×7
javascript ×2
vuejs2 ×2
ajax ×1
coding-style ×1
django-forms ×1
printing ×1
vue.js ×1
vuepress ×1
vuex ×1