django 开设接口 以及图片防盗链

开设接口:

"""
1 网址所使用的静态文件默认放在static文件夹下
2 用户上传的静态文件也应该单独放在某个文件夹下

media配置
    该配置可以让用户上传的所有文件都固定存放在某一个指定的文件夹下
    # 配置用户上传的文件存储位置
    MEDIA_ROOT = os.path.join(BASE_DIR,'media')  # 文件名 随你 自己
    会自动创建多级目录
    
如何开设后端指定文件夹资源
    首先你需要自己去urls.py书写固定的代码
    from django.views.static import serve
    from BBS14 import settings
        
    # 暴露后端指定文件夹资源
  url(r'^media/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT})
  
"""

步骤:

settings.py中添加一行

MEDIA_ROOT = os.path.join(BASE_DIR, 'files')    #上传路径,文件名随意

urls.py中添加

from django.conf.urls import url
from django.contrib import admin
from app01 import views
from django.views.static import serve    # 暴露接口使用
#from BBS import settings     # 暴露接口
from django.conf import settings  # 以后都用这个导配置文件,暴露接口


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # 注册
    url(r'^register/', views.register,name='register'),
    # 登录
    url(r'^login/', views.login, name='login'),
    # 退出登陆
    url(r'^logout/', views.logout, name='logout'),
    # 图片验证码
    url(r'^get_code/', views.get_code, name='get_code'),
    # 首页
    url(r'^home/', views.home, name='home'),
    # 修改密码
    url(r'^set_password/', views.set_password, name='set_password'),

    # 暴露后端指定文件夹资源,这样就会把files暴露给外界
    url(r'^files/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT})
]

 设置头像

settings.py

MEDIA_URL = '/files/'    #访问路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'files')    #上传路径

models.py

from django.db import modelsfrom django.contrib.auth.models import AbstractUser

# Create your models here.
'''
先写普通字段
之后在写外键字段
'''

class UserInfo(AbstractUser):
    phone = models.BigIntegerField(null=True,blank=True,verbose_name="手机号")
    """
    null=True   数据库该字段可以为空
    blank=True  admin后台管理该字段可以为空
    """
    # 头像
    avatar = models.FileField(upload_to="avatar/",default='avatar/default.png')
    """
    给avatar字段传文件对象 该文件会自动存储到avatar文件夹 然后avatar字段只保存文件路径avatar/default.png
    """
    create_time = models.DateTimeField(auto_now_add=True)

    blog = models.OneToOneField(to='Blog',null=True)
    class Meta:
        verbose_name_plural = "用户表"
        # verbose_name = "用户表"     # 使用verbose_name更改还是会加s ==> 用户表s

    def __str__(self):
        return self.username

图片防盗链:

# 如何避免别的网站直接通过本网站的url访问本网站资源

# 简单的防盗
    我可以做到请求来的时候先看看当前请求是从哪个网站过来的
  如果是本网站那么正常访问
  如果是其他网站直接拒绝
      请求头里面有一个专门记录请求来自于哪个网址的参数
        Referer: http://127.0.0.1:8000/xxx/

# 如何绕过防盗链技术
  1.要么修改请求头referer
  2.直接写爬虫把对方网址的所有资源直接下载到我们自己的服务器上
原文地址:https://www.cnblogs.com/baicai37/p/13096160.html