[pyweb]django的get_absolute_url函数

重点内容## django的get_absolute_url函数
这个函数的原理不太理解,查官网看了下,还是有点困惑
参考:

https://docs.djangoproject.com/en/1.11/ref/models/instances/

在shell打印下这个函数返回的值

from blog.models import Post

Post.objects.get(pk=3)
<Post: 我的第二篇文章>

p= Post.objects.get(pk=3)
p.get_absolute_url()
'/post/3/' # 这里打印出的和url写的关联着
url(r'^posts/(?P<pk>[0-9]+)/$', views.detail, name='detail'),

models是这样写的

class Post(models.Model):
    title = models.CharField(max_length=70)
    body = models.TextField()

    created_time = models.DateTimeField()
    modified_time = models.DateTimeField()

    excerpt = models.CharField(max_length=200, blank=True)

    category = models.ForeignKey(Category)
    tags = models.ManyToManyField(Tag, blank=True)

    author = models.ForeignKey(User)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog:detail', kwargs={'pk': self.pk})

views函数

def detail(request,pk):
    post = get_object_or_404(Post,pk=pk)

    post.body = markdown.markdown(post.body,
                                  extensions=[
                                     'markdown.extensions.extra',
                                     'markdown.extensions.codehilite',
                                     'markdown.extensions.toc',
                                  ])



    return render(request, 'blog/detail.html', context={'post': post})
Django中,为了确保上传到服务器的图片URL安全并仅限于白名单内的资源,你可以采取以下几个步骤: 1. 配置白名单: - 定义一个中间件(Middleware),比如自定义一个`WhitelistMediaMiddleware`。在这个中间件里,检查请求头中的`Content-Type`是否为图像类型,以及URL是否在预设的白名单内。 ```python class WhitelistMediaMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): if request.method == 'POST': content_type = request.META.get('HTTP_CONTENT_TYPE') if content_type.startswith('image/') and is_url_in_whitelist(request.build_absolute_uri()): # 允许请求继续处理 return self.get_response(request) else: # 如果不在白名单,可以返回403 Forbidden错误或者自定义错误页面 return HttpResponseForbidden() else: return self.get_response(request) # 在settings.py中启用中间件 MIDDLEWARE = [ ..., 'yourapp.middleware.WhitelistMediaMiddleware', # 将这里替换为你实际的中间件名称 ... ] ``` 2. 创建白名单: - 可以使用配置变量如`ALLOWED_HOSTS`来限制域名,或者在代码中维护一个列表,存储允许的URL前缀。 3. 判断URL是否在白名单: - 函数`is_url_in_whitelist(url)`是一个辅助函数,用于检查URL是否匹配某个模式或包含在白名单内。这可以通过正则表达式、字符串比较或数据库查询实现。 记得定期更新白名单,并根据实际需求调整策略,例如添加动态更新白名单的功能。同时,保持对用户上传内容的其他安全性控制措施,比如文件类型验证、大小限制等。如果需要进一步的信息,请问我关于Django安全性设置的更多细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值