"""
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
图片防盗链
请求头中该参数来决定
Referer: http://127.0.0.1:8000/xxx/
可通过爬虫直接获取文件到自己服务器解决图片防盗链