我现在正在上在线Django课程,并且我不理解某些配置代码。我的教练说,在填充我的数据库的python代码中,需要以下代码。
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ProTwo.settings')
import django
django.setup()
Run Code Online (Sandbox Code Playgroud)
我根本不理解这些代码在做什么,除了其中的第二个参数setdefault()是指我的应用程序的settings.py文件。
什么DJANGO_SETTINGS_MODULE啊 它有什么作用?为什么将其作为arg传入setdefault()?
怎么django.setup()办?它会发生什么变化?
请了解,我几乎是新手,也不懂很多行话。
请看这个例子。
如您所见,某种形式的event内容不断发送给客户端。我想模仿Django-Channels里面使用consumers.py。这是我所拥有的简化版本:
class ChatConsumer(AsyncConsumer):
async def ws_connect(self, event):
self.send = get_db_object()
....
await self.send({
"type": "websocket.accept"
})
# I need to CONSTANTLY receive & send data
async def ws_receive(self, event):
obj = ...# query DB and get the newest object
json_obj = {
'field_1': obj.field_1,
'field_2': obj.field_2,
}
await self.send({
"type": "websocket.send",
"text": json.dumps(json_obj)
})
@database_sync_to_async
def get_db_object(self, **kwargs):
return Some_Model.objects.get(**kwargs)[0]
Run Code Online (Sandbox Code Playgroud)
在这里,我希望我的Django后端能够不断运行:
查询数据库
从数据库接收obj
将收到的obj发送给前端Websocket event
我该如何实现?重要的是,我需要不变地将数据发送到客户端。
Django-Channels互联网上的大多数资源仅包含聊天应用程序,而不必经常将数据发送到客户端。我找不到能完成此工作的任何工作代码。
请不要再提出关于Redis或渠道文档的建议...或者缺少一些缺少良好文档的随机第3方库...。推荐起来很容易,但是很难实现。例如,我发现有人推荐 …
我想将拟合分布转换为频率。
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
%matplotlib notebook
# sample data generation
np.random.seed(42)
data = sorted(stats.lognorm.rvs(s=0.5, loc=1, scale=1000, size=1000))
# fit lognormal distribution
shape, loc, scale = stats.lognorm.fit(data, loc=0)
pdf_lognorm = stats.lognorm.pdf(data, shape, loc, scale)
fig, ax = plt.subplots(figsize=(8, 4))
ax.hist(data, bins='auto', density=True)
ax.plot(data, pdf_lognorm)
ax.set_ylabel('probability')
ax.set_title('Linear Scale')
Run Code Online (Sandbox Code Playgroud)
上面的代码片段将生成以下图:
正如您所看到的,y 轴表示概率。但我希望它是在频率方面。
fig, ax = plt.subplots(figsize=(8, 4))
ax.hist(data, bins='auto')
ax.set_ylabel('probability')
ax.set_title('Linear Scale')
Run Code Online (Sandbox Code Playgroud)
通过取消设置density=True,直方图将按照频率显示。但我不知道如何以与直方图中相同的方式拟合分布 - 观察我如何无法在此直方图中绘制橙色拟合线。
我怎样才能做到这一点?我认为我应该将拟合分布与直方图曲线下的面积相乘,但我不知道该怎么做。
python statistics distribution matplotlib probability-density
nums = [13, 1, 2, 13, 2, 1, 13]
index = [1,3]
unwanted = set()
for i in index:
unwanted.add(nums[i])
print(unwanted)
Run Code Online (Sandbox Code Playgroud)
有什么方法可以将中间 3 行代码合并为一行吗?所以,像
new = [i for i in nums if i not in unwanted]
Run Code Online (Sandbox Code Playgroud)
我是 python 新手,试图了解“i for i in nums ....”的作用。在典型的 for 循环中,我们只需编写
for i in item_list
....
Run Code Online (Sandbox Code Playgroud)
并且我们不在“for”前面添加“i”。我想知道“for”前面的“i”在做什么。
我有一个看起来像这样的字符串:
"aaa\n\t\n asd123asd water's tap413 water blooe's"
Run Code Online (Sandbox Code Playgroud)
如何使用正则表达式删除除撇号之外的所有转义字符、数字和标点符号?
我对正则表达式很陌生,如果您能解释每个表达式的含义,如果正则表达式公式很复杂,我将不胜感激
如何查询数据库中所有表的所有表列?
我试过的方法:
select tablename from pg_tables where schemaname = 'public'UNIONPostgres 的方法处理 cmd 字符串。我在一个数据库中有 19 个表,我的方法导致查询时间慢了 19 倍。而且,它不会返回我想要的东西。所有表都有两列,其中一列始终是名为time. 使用该UNION方法不会返回 19 个time字符串。它只返回一个time字符串和 19 个其他列名。但是,我想是这样的:
[('table_1', ['time', 'col']), ('table_2', ['time', 'col']), ('table_3', ['time', 'col])...]。
有没有优雅的方法来做到这一点?
在我的 html 上,我可以使用以下语法检查用户是否已登录:
{% if user.is_authenticated %}
<div id="display_something">...</div>
{% else %}
<p>Please Log in</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想检查用户是否为我呈现的每个 html 文件进行了身份验证,我该怎么办?我是否必须{% if ... %}为每个 html 文件复制和粘贴该块?Django 处理这个问题的方式是什么?什么是好的做法?
考虑以下代码,其中我有一个父模型,以及通过ForeignKey关系与父模型相关的所有子模型。每个孩子都可能有自己的孩子,让整个家庭看起来像一个树形结构。
class Parent(models.Model):
field = models.CharField(max_length=100, primary_key=True)
class Child_1(models.Model):
parent = models.ForeignKey(Parent, models.CASCADE, related_name='aa')
class Child_2(models.Model):
parent = models.ForeignKey(Parent, models.CASCADE, related_name='aa')
class Child_1_Child_1(models.Model):
parent = models.ForeignKey(Child_1, models.CASCADE, related_name='aa')
class Child_1_Child_2(models.Model):
parent = models.ForeignKey(Child_1, models.CASCADE, related_name='aa')
Run Code Online (Sandbox Code Playgroud)
在为 制作对象后Parent,我想创建所有子对象。
我想我可以像这样创建所有子对象:
parent = Parent.objects.create(**kwargs)
child_1 = Child_1.objects.create(parent=parent)
child_2 = Child_2.objects.create(parent=parent)
child_1_child_1 = Child_1_Child_1.objects.create(parent=child_1)
child_1_child_2 = Child_1_Child_2.objects.create(parent=child_1)
...
Run Code Online (Sandbox Code Playgroud)
但是你知道,这看起来不太好。是否有任何内置的 Django 方法可以在链中处理这种父子对象的创建?
我必须遵循forms.py并且models.py:
# models
class BHA_Component(models.Model):
item_description = models.CharField(max_length=111)
num_of_jts = models.CharField(max_length=111)
length = models.CharField(max_length=111)
cum_length = models.CharField(max_length=111)
outer_d = models.CharField(max_length=111)
# forms
class BHA_Component_Form(forms.ModelForm):
class Meta():
model = BHA_Component
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
到目前为止,我一直在使用 html 在屏幕上打印字段名称,如下所示:
{% for field in bha_form %}
<label>{{ field.name }}</label>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我传递了表单,bha_form作为 中的上下文变量views.py。
如果我使用这组代码,它会在屏幕上显示:
item_description, num_of_jts, length, cum_length, outer_d
但我想将其打印在屏幕上:
Item Description, # of jts, Lenth, Cum. Len., OD
正如你所看到的,我无法通过简单地使用某种s.upper()方法,或者正则表达式方法来获得这个输出,因为原始字段名称和我想要的输出之间没有一定的字符串转换关系。
我想手动决定每个字段将在屏幕上打印哪些字段名称。但我不想通过硬编码 html 元素来做到这一点,如下所示:
<label>Item …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的对象列表.
hand = [ Card(10, 'H'), Card(2,'h'), Card(12,'h'), Card(13, 'h'), Card(14, 'h') ]
Run Code Online (Sandbox Code Playgroud)
卡(10,'H)在这里不是元组,而是一个对象.我知道如果列表中的每个项目都是元组形式,如此排序,如何对此列表进行排序,
hand = sorted(hand, key = lambda x: x[0])
Run Code Online (Sandbox Code Playgroud)
但我不知道如何对对象列表进行排序.我想按第一个输入值排序我的列表,这是Card()中的数字
我怎样才能做到这一点?
编辑:这是Card()的定义.
class Card(object):
RANKS = (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
SUITS = ('C', 'D', 'H', 'S')
def __init__(self, rank=12, suit='S'):
if (rank in Card.RANKS):
self.rank = rank
else:
self.rank = 12
if (suit in Card.SUITS):
self.suit = suit.upper()
else:
self.suit = 'S'
def __str__(self):
if (self.rank == 14): …Run Code Online (Sandbox Code Playgroud) 我有这样的清单
a = [1,0,6,9,6,0,6,0,1,4,0,7,5,0]
Run Code Online (Sandbox Code Playgroud)
我想创建一个像这样的条件语句:
if a[1,3,8,13] != 0:
do something
Run Code Online (Sandbox Code Playgroud)
这段代码显然是错误的.它必须是这样的:
if a[1] != 0 and a[3] != 0 and a[8] != 0 and a[13] != 0:
do something
Run Code Online (Sandbox Code Playgroud)
我想知道在我的情况下是否有更优雅的方法来使用lambda或loop编写多个条件语句.假设我的列表长度为100,我需要为列表的57列创建条件语句.我可能不想以这样的方式写出来......谢谢
我点击列表按钮class="btn btn-primary modal-save".
当我点击那个按钮时,我希望它能抓住它的textarea元素div class="modal-body".
由于某种原因,我的closest()方法没有按照我希望的方式运行,并返回undefined
为什么,以及如何解决?
$('.modal-save').on('click', function() {
var text = $(this).closest(".modal-footer")[0];
console.log(text) // this code works
var text = $(this).closest(".modal-body textarea")[0];
console.log(text) // this gives me undefined. Why??
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="modal-content">
<div class="modal-header">...</div>
<div class="modal-body">
<textarea class="form-control" rows="10" placeholder='comment...'></textarea>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary modal-save" data-dismiss="modal">Save changes</button>
</div>Run Code Online (Sandbox Code Playgroud)
Forbidden (CSRF token missing or incorrect.)当我尝试使用登录页面时收到错误。
场景如下:
Forbidden (CSRF token missing or incorrect.)错误。csrf_token是在表格中。为什么会发生这种情况?我该如何修复它?
我不知道这会有帮助,但这是我的views.py登录信息
class Login_View(LoginView):
template_name = 'login.html'
def post(self, request, *args, **kwargs):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
response_data = {}
if user is not None:
if user.is_active:
login(request, user)
response_data['result'] = 'success'
else:
return HttpResponse("Inactive user.")
else:
response_data['result'] = 'fail'
return HttpResponse(json.dumps(response_data), content_type="application/json")
Run Code Online (Sandbox Code Playgroud) python ×8
django ×6
python-3.x ×4
ajax ×1
arrays ×1
channels ×1
conditional ×1
csrf ×1
database ×1
distribution ×1
django-csrf ×1
django-forms ×1
django-users ×1
for-loop ×1
html ×1
if-statement ×1
javascript ×1
jquery ×1
list ×1
matplotlib ×1
object ×1
postgresql ×1
regex ×1
set ×1
setdefault ×1
sorting ×1
sql ×1
statistics ×1
websocket ×1