请考虑以下Python代码:
import os
print os.getcwd()
Run Code Online (Sandbox Code Playgroud)
我os.getcwd()用来获取脚本文件的目录位置.当我从命令行运行脚本时它给了我正确的路径,而当我从Django视图中的代码运行的脚本运行它时,它会打印出来/.
如何从Django视图运行的脚本中获取脚本的路径?
更新:
总结到目前为止的答案 - os.getcwd()并且os.path.abspath()都给出当前工作目录,该目录可能是也可能不是脚本所在的目录.在我的网站主机设置中只提供没有路径的文件名.__file__
在Python中没有任何方法(总是)能够接收脚本所在的路径吗?
我正在使用Django作为我的主力来构建应用程序.到目前为止一直都很好 - 指定数据库设置,配置静态目录,网址,视图等.但是,当我想要渲染我自己的美丽和自定义404.html和500.html页面时,麻烦开始潜行.
我阅读了有关自定义错误处理的文档,并在UrlsConf中设置了必要的配置,创建了相应的视图,并将404.html和500.html添加到了我的应用程序的模板目录(也在settings.py中指定).
但是文档说you can actually view custom error views until Debug is Off,所以我确实把它关掉来测试我的东西,那就是什么东西变得狂暴!
我不仅无法查看自定义404.html(实际上,它加载,但因为我的错误页面每个都包含一个图形错误消息 - 一些不错的图像),错误页面的源加载,但没有其他任何加载!甚至没有链接CSS或Javascript!
通常,一旦我设置DEBUG = False,所有视图将加载,但任何链接的内容(CSS,Javascript,图像等)将不会加载!发生了什么?关于静态文件和DEBUG设置有什么遗漏吗?
我在理解新CBV如何工作方面遇到了一些麻烦.我的问题是,我需要登录所有视图,其中一些是特定权限.在基于函数的视图中,我使用@permission_required()和视图中的login_required属性执行此操作,但我不知道如何在新视图上执行此操作.django文档中是否有一些部分解释了这一点?我没找到任何东西.我的代码有什么问题?
我尝试使用@method_decorator,但它回复" / errors/prueba/_wrapped_view()中的TypeError至少需要1个参数(0给定) "
这是代码(GPL):
from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required, permission_required
class ViewSpaceIndex(DetailView):
"""
Show the index page of a space. Get various extra contexts to get the
information for that space.
The get_object method searches in the user 'spaces' field if the current
space is allowed, if not, he is redirected to a 'nor allowed' page.
"""
context_object_name = 'get_place'
template_name = 'spaces/space_index.html'
@method_decorator(login_required)
def get_object(self):
space_name = self.kwargs['space_name']
for i in self.request.user.profile.spaces.all():
if i.url …Run Code Online (Sandbox Code Playgroud) django django-views django-authentication django-class-based-views class-based-views
我有一个像这样的Django网址:
url(
r'^project_config/(?P<product>\w+)/(?P<project_id>\w+)/$',
'tool.views.ProjectConfig',
name='project_config'
),
Run Code Online (Sandbox Code Playgroud)
和我的views.py:
def ProjectConfig(request, product, project_id=None, template_name='project.html'):
...
# do stuff
Run Code Online (Sandbox Code Playgroud)
问题是我希望project_id参数是可选的.我想这样,project_id并且/project_config/都是同样有效的url模式,所以IF /project_config/12345abdce/传递,然后我可以使用它.就目前而言,如果我尝试访问没有project_id参数的url,我会得到404 .
我正在使用reportlab pdfgen来创建PDF.在PDF中有一个由...创建的图像drawImage.为此,我要么需要图像的URL,要么需要视图中图像的路径.我设法建立了URL但是如何获得图像的本地路径?
我如何获得URL:
prefix = 'https://' if request.is_secure() else 'http://'
image_url = prefix + request.get_host() + STATIC_URL + "images/logo_80.png"
Run Code Online (Sandbox Code Playgroud) def index(request):
latest_question_list = Question.objects.all().order_by('-pub_date')[:5]
template = loader.get_template('polls/index.html')
context = {'latest_question_list':latest_question_list}
return HttpResponse(template.render(context, request))
Run Code Online (Sandbox Code Playgroud)
该函数的第一行在Question.objects.all() - > E1101:类'问题has no objects成员`上出错
我遵循Django文档教程,他们有相同的代码并运行.
我试过调用一个实例.
Question = new Question()
and using MyModel.objects.all()
Run Code Online (Sandbox Code Playgroud)
我的那个类的models.py代码也是这个......
class Question(models.Model):
question_text = models.CharField(max_length = 200)
pub_date = models.DateTimeField('date published')
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
def __str__(self):
return self.question_text
Run Code Online (Sandbox Code Playgroud)
无济于事我仍然有这个错误.
我读过有关pylint的内容并且运行了这个......
pylint --load-plugins pylint_django
Run Code Online (Sandbox Code Playgroud)
哪个没有帮助,即使是github自述文件说...
防止有关Django生成的属性(如Model.objects或Views.request)的警告.
我在virtualenv中运行命令,但什么都没有.
所以任何帮助都会很棒
如何查看"反向"正在查看的当前urlpatter?
我在一个观点中反向调用我认为应该有效的论据,但事实并非如此.我可以用任何方式检查那里有什么,为什么我的模式不是?
ViewSets 有自动方法来列出,检索,创建,更新,删除,...
我想禁用其中的一些,我想出的解决方案可能不是一个好的,因为OPTIONS仍然表示允许的那些.
关于如何以正确的方式做到这一点的任何想法?
class SampleViewSet(viewsets.ModelViewSet):
queryset = api_models.Sample.objects.all()
serializer_class = api_serializers.SampleSerializer
def list(self, request):
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
def create(self, request):
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
Run Code Online (Sandbox Code Playgroud) 我需要使用网页从django中的数据库中选择几个要删除的对象.没有可供选择的类别,所以我无法从中删除所有这些类别.我是否必须实现自己的删除表单并在django中处理它或django有办法已经这样做了吗?正如它在管理界面中实现的那样.
我有一个基于类的自定义视图
# myapp/views.py
from django.views.generic import *
class MyView(DetailView):
template_name = 'detail.html'
model = MyModel
def get_object(self, queryset=None):
return queryset.get(slug=self.slug)
Run Code Online (Sandbox Code Playgroud)
我想像这样传入slug参数(或其他参数到视图)
MyView.as_view(slug='hello_world')
Run Code Online (Sandbox Code Playgroud)
我是否需要覆盖任何方法才能执行此操作?