base.html用作所有其他页面的基本模板.base.html有导航栏,在导航栏中,我想显示用户收到的邮件数量.因此,我需要有一个变量一样{{number_of_messages}}的base.html.
但是,我应该如何将此变量传递给它?每个模板都扩展base.html并由函数呈现.我不认为回归number_of_messages所有功能是一个好方法.有没有更好的方法来实现这个?如何将此变量传递给所有模板?
我是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)
模板是: …
我正在使用 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?或者其他更好的解决方案?
太感谢了。
我正在项目中使用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)
但是,过滤器似乎没有返回任何东西.是因为找不到网址吗?还是其他原因?谢谢你的时间!
我在做一个预填充的表单时遇到了这个奇怪的问题。在我的模板中,表单方法明确说明为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. 以前有人遇到过这种奇怪的事情吗?