小编tso*_*ran的帖子

Django的可疑行动

我在尝试删除上传的图片时遇到了问题.

错误是这样的:

SuspiciousOperation: Attempted access to '/media/artists/12-stones/154339.jpg' denied.
Run Code Online (Sandbox Code Playgroud)

看完后看起来错误是因为它正在寻找错误位置的图像(注意第一个斜杠,/ media /文件系统上不存在)

我的MEDIA_ROOT和MEDIA_URL是:

MEDIA_ROOT = '/home/tsoporan/site/media/'
MEDIA_URL = "/media/
Run Code Online (Sandbox Code Playgroud)

我的模型upload_to参数传递了这个函数:

def get_artist_path(instance, filename):
  return os.path.join('artists', slugify(instance.name), filename)
Run Code Online (Sandbox Code Playgroud)

我的问题是:

1)如何解决此问题以备将来上传?

2)是否可以修复当前图像的路径而无需重新上载?

此致,提图斯

python django

28
推荐指数
3
解决办法
3万
查看次数

Django formset不验证

我试图保存一个formset但它似乎绕过is_valid(),即使有必要的字段.

为了测试这个我有一个简单的形式:

class AlbumForm(forms.Form):
  name = forms.CharField(required=True)
Run Code Online (Sandbox Code Playgroud)

风景:

@login_required
def add_album(request, artist):
  artist = Artist.objects.get(slug__iexact=artist)
  AlbumFormSet = formset_factory(AlbumForm)
  if request.method == 'POST':
    formset = AlbumFormSet(request.POST, request.FILES)
    if formset.is_valid():
      return HttpResponse('worked')
  else:
    formset = AlbumFormSet()
  return render_to_response('submissions/addalbum.html', {
   'artist': artist,
   'formset': formset,
  }, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

和模板:

<form action="" method="post" enctype="multipart/form-data">{% csrf_token %}
{{ formset.management_form }}
{% for form in formset.forms %}
  <ul class="addalbumlist">
    {% for field in form %}
     <li>
        {{ field.label_tag }}
        {{ field }}
        {{ field.errors }}
     </li>
    {% endfor …
Run Code Online (Sandbox Code Playgroud)

forms django formset

8
推荐指数
2
解决办法
7672
查看次数

用lxml.html替换元素

作为一个整体,我对lxml和HTML Parsers相当新.我想知道是否有办法用另一个元素替换树中的元素......

例如,我有:

body = """<code> def function(arg): print arg </code> Blah blah blah <code> int main() { return 0; } </code> """

doc = lxml.html.fromstring(body)
codeblocks = doc.cssselect('code')

for block in codeblocks:
  lexer = guess_lexer(block.text_content())
  hilited = highlight(block.text_content(), lexer, HtmlFormatter())
  doc.replace(block, hilited)
Run Code Online (Sandbox Code Playgroud)

我想沿着这些行做一些事情,但这会导致"TypeError",因为"hilited"不是lxml.etree._Element.

这可行吗?

问候,

python lxml

7
推荐指数
1
解决办法
7647
查看次数

标签 统计

django ×2

python ×2

forms ×1

formset ×1

lxml ×1