我正在关注Django的官方教程2,但由于某种原因,尽管按照我的理解正确地执行了所有步骤,但仍无法创建管理站点.
这是我得到的错误:
TemplateDoesNotExist at /admin/
admin/login.html
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/
Django Version: 1.3.1
Exception Type: TemplateDoesNotExist
Exception Value:
admin/login.html
Exception Location: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/template/loader.py in find_template, line 138
Python Executable: /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Python Version: 2.7.2
Python Path:
['/Users/jcugley/Documents/Programming/Python/Django/mysite',
'/Library/Python/2.7/site-packages/setuptools-0.6c11-py2.7.egg',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages',
'/Library/Python/2.7/site-packages']
Server time: Tue, 24 Jan 2012 18:40:03 -0600
Run Code Online (Sandbox Code Playgroud)
取消注释以下行(注释)后发生错误:
### urls.py ###
from django.conf.urls.defaults import patterns, include, url
from django.contrib import admin # THIS LINE
admin.autodiscover() # THIS LINE
urlpatterns …Run Code Online (Sandbox Code Playgroud) 我试图实现一些看似简单的东西,但我无法找到任何答案,无论是在谷歌还是在这里.我有一个Django模型,简单的东西:
class Shipment(models.Model):
id = models.AutoField(primary_key=True)
transaction = models.ForeignKey(Transaction)
Run Code Online (Sandbox Code Playgroud)
我希望能够通过transaction.id在我的发货管理页面中进行搜索.为了清楚起见,我想要这个(这段代码显然不起作用):
class ShipmentAdmin(admin.ModelAdmin):
list_display = ('id', 'transaction')
search_fields = ['id', 'transaction.id']
Run Code Online (Sandbox Code Playgroud)
这不起作用导致transaction.id没有命名字段.任何的想法?通过"搜索",我的意思是能够在"货件管理"页面的搜索框中插入我的交易ID,按"搜索"并自动检索适当的交易.
我正在与Django建立个人项目,以培养自己(因为我喜欢Django,但我很想念技能).我有基本要求,我知道Python,如果不是三次,我会仔细阅读两次Django书.
我的目标是创建一个简单的监控服务,使用基于Django的Web界面,允许我检查我的"节点"(服务器)的状态.每个节点都有多个"服务".应用程序检查每个节点的每个服务的可用性.
我的问题是我不知道如何在我的数据库中表示不同类型的服务.我想到了两个"解决方案":
这是我的models.py文件的简短摘录:(我删除了与此问题无关的所有内容)
from django.db import models
# Create your models here.
class service(models.Model):
port = models.PositiveIntegerField()
class Meta:
abstract = True
class sshService(service):
username = models.CharField(max_length=64)
pkey = models.TextField()
class telnetService(service):
username = models.CharField(max_length=64)
password = models.CharField(max_length=64)
class genericTcpService(service):
pass
class genericUdpService(service):
pass
class node(models.Model):
name = models.CharField(max_length=64)
# various fields
services = models.ManyToManyField(service)
Run Code Online (Sandbox Code Playgroud)
当然,与ManyToManyField的界限是虚假的.我不知道该替代"*服务".我老老实实地寻找有关此问题的解决方案,我听说过"通用关系",三联表,但我并不真正了解这些事情.
而且,英语不是我的母语,所以进入数据库结构和语义,我对所读内容的知识和理解是有限的(但那是我的问题)
我用来xlrd从excel文件中读取数据.
对于存储在文件中的整数,比方说63,将其xlrd解释为63.0类型number.
为什么不能xlrd识别63为整数?
假设sheet.row(1)[0].value给了我们63.0.我怎样才能将它转换回来63.
有没有办法在django管理员中使模型只读?但我的意思是整个模型.那么,没有添加,没有删除,没有变化,只看到对象和字段,一切都是只读的?
我知道这个问题不是完全程序化的,但我知道很多人都想知道同样的事情,所以我会继续说:Python徽标是什么意思?有人得到了吗?

我想编写Python代码以将文件从客户端发送到服务器.服务器需要保存从客户端发送的文件.但我的代码有一些我无法解决的错误.以下是我的服务器代码:
# server.py
from SimpleXMLRPCServer import SimpleXMLRPCServer
import os
server = SimpleXMLRPCServer(('localhost', 9000))
def save_data(data):
handle = open("x123.dat", "wb")
handle.write(data)
handle.close()
server.register_function(save_data, 'save_data')
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)
和客户端代码:
# client.py
import sys, xmlrpclib
proxy = xmlrpclib.Server('http://localhost:9000')
handle = open(sys.argv[1], "rb")
proxy.save_data(handle.read())
handle.close()
Run Code Online (Sandbox Code Playgroud)
但后来我运行我的代码,客户端返回以下错误(这是在Windows上):
Traceback (most recent call last):
File "client.py", line 6, in <module> proxy.save_data(handle.read())
File "c:\python27\lib\xmlrpclib.py", line 1224, in __call__
return self.__send(self.__name, args)
File "c:\python27\lib\xmlrpclib.py", line 1575, in __request
verbose=self.__verbose
File "c:\python27\lib\xmlrpclib.py", line 1264, in request
return self.single_request(host, handler, request_body, verbose)
File …Run Code Online (Sandbox Code Playgroud) 在settings.py我有:
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'xxxxxxxxxxxxx'
AWS_SECRET_ACCESS_KEY = 'xxxxxxxxxxxxx'
AWS_STORAGE_BUCKET_NAME = 'static.mysite.com'
Run Code Online (Sandbox Code Playgroud)
这指向我的S3存储桶static.mysite.com并且在我这样做时工作正常manage.py collectstatic,它将所有静态文件上传到我的存储桶.不过,我还有一个水桶,我用不同的目的,想如果我有这样的模型在网站的某些地区使用,例如:
class Image(models.Model):
myobject = models.ImageField(upload_to='my/folder')
Run Code Online (Sandbox Code Playgroud)
现在Image.save()调用它时,它仍会将文件上传到S3存储桶中AWS_STORAGE_BUCKET_NAME,但是我希望它Image.save()指向另一个S3存储桶.任何清洁这样的方式?我不想改变settings.py运行时间,也不想实现任何违反django关键原则的做法,即具有可插入的易于更改的后端存储.
在Python中,您可以获得两组的交集:
>>> s1 = {1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s2 = {0, 3, 5, 6, 10}
>>> s1 & s2
set([3, 5, 6])
>>> s1.intersection(s2)
set([3, 5, 6])
Run Code Online (Sandbox Code Playgroud)
&谁知道这个intersection()算法的复杂性?
编辑:此外,有谁知道Python集背后的数据结构是什么?
假设我们有以下类层次结构:
class ClassA:
@property
def foo(self): return "hello"
class ClassB(ClassA):
@property
def bar(self): return "world"
Run Code Online (Sandbox Code Playgroud)
如果我像这样在ClassB上探索__ dict __,我只看到bar属性:
for name,_ in ClassB.__dict__.items():
if name.startswith("__"):
continue
print(name)
Run Code Online (Sandbox Code Playgroud)
输出是吧
我可以使用自己的方法来获取不仅指定类型而且还包含其祖先的属性.但是,我的问题是,在没有重新发明轮子的情况下,我是否已经在python中实现了这一目标.
def return_attributes_including_inherited(type):
results = []
return_attributes_including_inherited_helper(type,results)
return results
def return_attributes_including_inherited_helper(type,attributes):
for name,attribute_as_object in type.__dict__.items():
if name.startswith("__"):
continue
attributes.append(name)
for base_type in type.__bases__:
return_attributes_including_inherited_helper(base_type,attributes)
Run Code Online (Sandbox Code Playgroud)
运行我的代码如下......
for attribute_name in return_attributes_including_inherited(ClassB):
print(attribute_name)
Run Code Online (Sandbox Code Playgroud)
...回馈bar和foo.
请注意,我正在简化一些事情:名称冲突,使用items(),对于此示例,我可以使用dict,跳过以__开头的任何内容,忽略两个祖先本身具有共同祖先的可能性等.
EDIT1 - 我试图让这个例子变得简单.但我真的想要每个类和祖先类的属性名称和属性引用.下面的答案之一让我有了一个更好的轨道,当我开始工作时,我会发布一些更好的代码.
EDIT2 - 这就是我想要的,而且非常简洁.它基于以下Eli的答案.
def get_attributes(type):
attributes = set(type.__dict__.items())
for type in type.__mro__:
attributes.update(type.__dict__.items())
return attributes
Run Code Online (Sandbox Code Playgroud)
它返回属性名称及其引用. …
python ×7
django ×5
django-admin ×3
amazon-s3 ×1
attributes ×1
foreign-keys ×1
model ×1
readonly ×1
search ×1
sendfile ×1
set ×1
xlrd ×1
xml-rpc ×1