我正在使用userena并在我的models.py中添加以下行
zipcode = models.IntegerField(_('zipcode'),
max_length=5)
Run Code Online (Sandbox Code Playgroud)
我点击注册表单上的提交按钮后出现以下错误:
IntegrityError at /accounts/signup/
NOT NULL constraint failed: accounts_myprofile.zipcode
Run Code Online (Sandbox Code Playgroud)
我的问题是这个错误是什么意思,这与Userena有关吗?
我正在努力制作一个用".zip"扩展删除项目的脚本.
import sys
import os
from os import listdir
test=os.listdir("/Users/ben/downloads/")
for item in test:
if item.endswith(".zip"):
os.remove(item)
Run Code Online (Sandbox Code Playgroud)
每当我运行脚本时,我得到:
OSError: [Errno 2] No such file or directory: 'cities1000.zip'
Run Code Online (Sandbox Code Playgroud)
cities1000.zip显然是我的下载文件夹中的一个文件.
我在这做错了什么?os.remove是否需要文件的完整路径?如果这是问题,那么如何在没有完全重写的情况下在当前脚本中执行此操作.
我试图在Django中编写一个非常基本的AJAX请求,并且我一直在Chrome Dev和Django控制台中收到403禁用错误.我前几天发布了一个类似的问题并尝试了所有提议的解决方案,包括@csrf_exempt(以排除这是否是一个csrf问题),我尝试在AJAX POST请求中包含csrfmiddlewaretoken:'{{csrf_token}}' (在数据下面),这也没有解决问题.这是我的代码.
def profile_listview(request, username,
template_name=userena_settings.USERENA_PROFILE_DETAIL_TEMPLATE,
extra_context=None, **kwargs):
user = get_object_or_404(get_user_model(),
username__iexact=username)
fullsalelist = Entry.objects.filter(author__username__iexact=username)
@csrf_exempt
def delete_object(request):
if request.is_ajax():
print "request is ajax"
object_name = request.POST.get('entryname')
targetobject = Entry.objects.get(headline=object_name)
if request.user.username == targetobject.author:
targetobject.delete()
print "hello"
return HttpResponseRedirect('/storefront/')
Run Code Online (Sandbox Code Playgroud)
和模板中的AJAX代码:
<script type="text/javascript">
var my_app = {
username: "{{ request.user.username }}"
};
</script>
<script>
$(document).ready(function() {
$(".delete_button").click(function() {
var id = $(this).attr('id');
$.ajax({
type: "POST",
url: "/accounts/" + my_app.username + "/listview/",
data: { entryname:id },
});
return false;
}); …
Run Code Online (Sandbox Code Playgroud) 我在我的模型中添加了一个字段'nearbyzips',现在我无法解决这些错误.这些是我采取的步骤.
manage.py sqlclear accounts
manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
我从这两个命令中得不到任何错误,但是一旦运行manage.py check_permissions,我得到:
ProgrammingError: column accounts.my_profile.nearbyzips" does not exist
Run Code Online (Sandbox Code Playgroud)
我还安装了南方(尽管我不想使用它),并且按照教程将现有项目转换为使用South.这不起作用,所以我从已安装的应用程序中删除了南,并删除了我的帐户文件夹中的迁移文件夹.
我对'manage.py sqlclear accounts'的理解是它将删除实际的数据库表,然后syncdb将重建它.这似乎没有做它应该做的事情否则,它会消除我会假设的错误.我所做的就是添加一个模型字段,这应该不是那么困难.
有没有人有任何其他建议?我已经阅读了关于这个主题的无数堆栈溢出帖子,我正在阅读的唯一真正的解决方案是使用我已经完成的sqlclear,所以我担心在解决这个问题上我已经走到了尽头.
我正在尝试在settings.py中配置我的日志记录配置,并且有很多选项,我无法复制内置开发服务器日志(打印到控制台).
我希望我的生产日志记录通常在开发服务器日志中打印到控制台的相同信息(GET请求,调试信息等).我要么知道下面需要更改哪些设置,要么知道内置开发服务器日志的设置位置,以便我可以复制它.
LOGGING = {
'version': 1,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/home/django/django_log.log',
'formatter': 'simple'
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
}
}
if DEBUG:
# make all loggers use the console.
for logger in LOGGING['loggers']:
LOGGING['loggers'][logger]['handlers'] = ['console']
Run Code Online (Sandbox Code Playgroud)
我也不想在其他任何地方添加任何代码,除非我的settings.py,如果可能的话.我不想进入我的views.py并指定要打印或记录的错误,我从来没有用开发服务器这样做,所以我希望我能弄清楚这一点.
我目前正在使用 Django-Messages 处理收件箱。现在,当我进入收件箱时,它会列出所有消息,但我要做的是将消息组织到页面上的块中,到今天、昨天、上周等。我目前有一个 for 循环,它遍历所有消息并显示它们。我想我需要在 for 循环中嵌套一个 if 语句,可能像这样:
Inbox | Received Today
{% if message.date - current.date < 24 hours %}
Sent by: {{ message.sender }}
{{ message.body }}
{% elif message.date - current.date > 24 hours and message.date - current.date < 48 hours %}
Sent by: {{ message.sender }}
{{ message.body }
{% endif %}
Run Code Online (Sandbox Code Playgroud)
我的问题是“current.date”该放什么?我知道我可以通过执行以下操作在 python 中找到当前日期:
datetime.datetime.now()
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能在模板中得到这个?我是否需要先在视图中执行此操作,然后在模板中使用变量?
我也觉得我尝试这样做的方式可能不是那么有效?
这可能是一个非常愚蠢的问题,但是我如何使用下面的查询来检索 Integer?
staravg = UserReview.objects.filter(name__username__iexact=username).aggregate(Avg('stars'))
Run Code Online (Sandbox Code Playgroud)
如果我在模板中执行 {{ staravg }},我会得到 {'stars__avg': 3.33333333333333335}。我知道我可以使用某种模板过滤器检索 3.333,但是必须有一种更简单的方法来检索整数,对吗?星星来自 IntegerField 仅供参考。
所以我试图制作一个基本的Dockerfile,但是当我运行它时,它说
The command bin/sh -c sudo apt-get install git python-yaml python-jinja2 returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)
我的问题是我在这里做错什么,甚至可以从Dockerfile中执行“ cd”和“ source”之类的命令吗?
FROM Ubuntu
MAINTAINER example
#install and source ansible
RUN sudo apt-get update
RUN sudo apt-get install git python-yaml python-jinja2 python-pycurl
RUN sudo git clone https://github.com/ansible/ansible.git
RUN sudo cd ansible
RUN sudo source ./hacking/env-setup
Run Code Online (Sandbox Code Playgroud) 所以我是学习装饰器的新手,我已经阅读了无数的教程,虽然我理解并且基本上可以遵循所有示例,但我认为最好的学习方法是自己实现装饰器。所以我将在下面使用这个例子。我意识到装饰器根本不需要执行此操作,但为了学习,我想添加一个装饰器来过滤狗名和品种等字符串并将其转换为小写。任何正确方向的想法或指示将不胜感激。
class Dogs:
totalDogs = 0
dogList=[]
def __init__(self, breed, color, age):
self.breed=breed
self.color=color
self.age=age
Dogs.dogList.append(self.breed)
Dogs.totalDogs += 1
def displayDogs(self):
print "breed: ", self.breed
print "color: ",self.color
print "age: ",self.age
print "list of breeds:", Dogs.dogList
print "total dogs: ", Dogs.totalDogs
def somedecorator(*args):
#now what
terrier=Dogs("TeRrIer", "white", 5)
terrier.displayDogs()
retriever=Dogs("goldenRETRIEVER", "brown", 10)
retriever.displayDogs()
Run Code Online (Sandbox Code Playgroud) 我试图了解它是如何super()
工作的.我理解它的作用,但我不了解幕后发生的事情的机制.我不太清楚的一点是:
class b(a):
def __init__(self, name, age):
self.name=name
self.age=age
super(b, self).__init__(name, age)
Run Code Online (Sandbox Code Playgroud)
和:
class b(a):
def __init__(self, name, age):
super(b, self).__init__(name, age)
self.name=name
self.age=age
Run Code Online (Sandbox Code Playgroud)
也许这两个例子没有区别,但我知道还有其他情况需要super()
处理问题.例如,这个Django方法我前几天需要帮助,我被指示移动super()
到if语句之上,而不是在底部.我想知道为什么这很重要.
class Mymodel(models.Model):
photo = models.ImageField(upload_to="...", blank=True)
def save(self, *args, **kwargs):
image_resized = kwargs.pop('image_resized',False)
super(Mymodel, self).save(*args, **kwargs)
if self.photo and image_resized:
basewidth = 300
filename = self.get_source_filename()
image = Image.open(filename)
wpercent = (basewidth/float(image.size[0]))
hsize = int((float(image.size[1])*float(wpercent)))
img = image.resize((basewidth,hsize), PIL.Image.ANTIALIAS)
self.photo = img
self.save(image_resized = True)
Run Code Online (Sandbox Code Playgroud)