小编Wei*_* Xu的帖子

base.html中的Django变量

base.html用作所有其他页面的基本模板.base.html有导航栏,在导航栏中,我想显示用户收到的邮件数量.因此,我需要有一个变量一样{{number_of_messages}}base.html.

但是,我应该如何将此变量传递给它?每个模板都扩展base.html并由函数呈现.我不认为回归number_of_messages所有功能是一个好方法.有没有更好的方法来实现这个?如何将此变量传递给所有模板?

python django

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

Django ModelForm Imagefield上传

我是Django的新手,我遇到了使用ModelForm处理图像上传的问题.我的模型如下:

class Project(models.Model):
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=2000)
    startDate = models.DateField(auto_now_add=True)
    photo = models.ImageField(upload_to="projectimg/", null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

模型形式如下:

class AddProjectForm(ModelForm):
    class Meta:
        model = Project
        widgets = {
            'description': Textarea(attrs={'cols': 80, 'rows': 50}),
        }
        fields = ['name', 'description', 'photo']
Run Code Online (Sandbox Code Playgroud)

而View功能是:

def addProject(request, template_name):
if request.method == 'POST':
    addprojectform = AddProjectForm(request.POST,request.FILES)
    print addprojectform
    if addprojectform.is_valid():
        newproject = addprojectform.save(commit=False)
        print newproject
        print request.FILES
        newproject.photo = request.FILES['photo']
        newproject.save()
        print newproject.photo
else:
    addprojectform = AddProjectForm()

newProposalNum = projectProposal.objects.filter(solved=False).count()
return render(request, template_name, {'addprojectform':addprojectform,
                                       'newProposalNum':newProposalNum})
Run Code Online (Sandbox Code Playgroud)

模板是: …

python django modelform

18
推荐指数
1
解决办法
2万
查看次数

url 中没有 pk 的 Django UpdateView

我正在使用 Django 的 UpdateView 来更新用户的个人资料。我在 url 中传递配置文件的 pk,如下所示:

url(r'^profile/edit/(?P<pk>(\d+))$', profileviews.ProfileUpdateView.as_view(),
Run Code Online (Sandbox Code Playgroud)

在 view.py 中,我只使用 UpdateView:

class ProfileUpdateView(UpdateView):
    model = Profile
    form_class = UserProfileForm
Run Code Online (Sandbox Code Playgroud)

它可以工作。但是,我发现如果我以另一个用户身份登录并输入相同的网址,我将能够编辑该用户的个人资料!这绝对是错误的,并且其他用户绝不应该有权编辑其他人的个人资料。

请问有没有非常好的解决方案来解决这个问题?在url中隐藏pk?或者其他更好的解决方案?

太感谢了。

python security django url

4
推荐指数
1
解决办法
2237
查看次数

Django Easy Thumbnail无效

我正在项目中使用django easy_thumbnail,我一步一步地按照说明操作.但事实证明,网址不会被退回.

包含imageField的模型是:

class Project(models.Model):
   name = models.CharField(max_length=100)
   description = models.CharField(max_length=2000)
   startDate = models.DateField(auto_now_add=True)
   photo = models.ImageField(upload_to="projectimg/", null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

在设置中,我指定:

    THUMBNAIL_ALIASES = {
    '': {
        'avatar': {'size': (50, 50), 'crop': True},
    },
    }
Run Code Online (Sandbox Code Playgroud)

我使用模板过滤器:

<div class="image">
    <img src="{{ MEDIA_URL }}{{ project.photo|thumbnail_url:'avatar'}}" class="img-responsive" alt="{{ project.name }}">
</div>
Run Code Online (Sandbox Code Playgroud)

但是,过滤器似乎没有返回任何东西.是因为找不到网址吗?还是其他原因?谢谢你的时间!

python django easy-thumbnails

4
推荐指数
1
解决办法
3976
查看次数

为什么我的 Django request.method 是“GET”而不是“POST”?

我在做一个预填充的表单时遇到了这个奇怪的问题。在我的模板中,表单方法明确说明为POST

<form class="form-horizontal" role="form" action="" method="post" enctype="multipart/form-data">{% csrf_token %}
Run Code Online (Sandbox Code Playgroud)

但在我的视图函数中, request.method 结果是GET.

下面是我的视图函数:

def editProfile(request,template_name):
    theprofile = request.user.profile

    print theprofile.fullname

    notificationMSG = ''
    print request.method

    if request.method == 'POST':
        form = UserProfileForm(request.POST,request.FILES, instance=theprofile)
        if form.is_valid():
            form.save()
            notificationMSG = "success?"

    else:
        form = UserProfileForm()
        print "error"

    dic = {'form':form,
           'notificationMSG':notificationMSG}

    return render_to_response(template_name, dic, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它会打印出GET. 以前有人遇到过这种奇怪的事情吗?

python django django-forms

3
推荐指数
1
解决办法
3170
查看次数