文章目录
Django立项
Django下载
在虚拟环境中安装
创建虚拟环境:https://blog.csdn.net/qq_48082548/article/details/120136668
pip install Django==2.1.2
使用命令创建Django项目
创建项目命令:
选择项目要保存的的位置, 使用命令创建项目:
django-admin startproject Django01
创建app文件夹:
创建app文件夹有两种方式第一种是使用命令提示窗口来进行创建第二种是使用pycharm来进行创建
命令提示窗口创建:
命令:
python manage.py startapp app01(app名称)
注意 创建app文件夹需要在于manage.py同级目录
使用pycharm创建:
创建好项目后也可以使用这个来创建
startapp app名
创建好后需要在settings的INSTALLED_APPS中添加
app名字
使用命令创建的项目需要手动添加team plates
文件的作用
Django相关配置
apps配置
这样配置在settings添加app的时候就方便很多
sys.path.insert(0,os.path.join(BASE_DIR,"apps"))
这样就很方便的添加app应用
template配置
'DIRS': [os.path.join(BASE_DIR, "templates")],
static配置
django的static可以放在两种地方:
第一种就是放在app下
第二种就是在当前项目目录下
第一种需要settings这两个参数为True才能使用
第二种当前项目目录下需要自己创建一个static目录然后在settings中配置
STATICFILES_DIRS=[
os.path.join(BASE_DIR,"static")
]
在前端文件中访问静态文件的地址使用:
在每个要访问静态文件html中添加:
{% load staticfiles %}
在把要访问的地址修改为:
{% static 'js/jquery.min.js' %}
例如:
<script src="{% static 'js/jquery.min.js' %}" type="text/javascript"></script>
url配置
如果只返回前端文件,不创建view可以这么配置:
path('', TemplateView.as_view(template_name="html/index.html"),name='index'),
还有一种配置就是:
通过视图.as_view()
path('login/', LoginView.as_view(),name='login'),
还有一种url配置需要使用include,还需要创建在app下创建urls文件
这种配置呢适合这种比如:user/list,user/index,user/login,他们前面都要地址都是user开头
就能使用这种配置
首先需要创建好视图,然后再相应的app下创建urls文件:配置路由
urlpatterns = [
url("^list/$", OrgListView.as_view(), name="list"),
url("^index/$", OrgIndexView.as_view(), name="index"),
]
然后再项目中的urls文件中去指定一下就可以了
#apps.organizations.urls:需要指定的urls
#organizations:app的名称
url("^org/", include(('apps.organizations.urls','organizations'),namespace="org")),
这样路由就是 服务器域名/org/list
前后端不分离如何指定:
在html中使用
{% url 'org:list' %}
子路由的相关配置
子路由是为进一步提升模块可维护性,使用子路由只是改善了urls.py中所有路由放在一起的混乱状况。
- 在相应的app下创建urls.py文件
- 在项目的urls.py中将子路由进行配置(当访问org时就会访问apps.organizations.urls的路由)
urlpatterns = [
url("^org/", include(('apps.organizations.urls','organizations'),namespace="org")),
]
- 子路由配置的两种方法
urlpatterns = [
url("^list/$", OrgListView.as_view(), name="list"),
#如果需要获得地址里的参数可以使用这两种方法解决,视图需要接收ord_id参数
url("^(?P<ord_id>\d+)/$", OrgDetailView.as_view(), name="home"),
path("<int:ord_id>/", OrgDetailView.as_view(), name="home"),
]
- 视图
class OrgDetailView(View):
def get(self,request,ord_id,*args,**kwargs):
return render(request,"html/org-detail-homepage.html")
- 前端如何使用url来指定子路由
{% url 'org:home' %}
前端中如何子路由传参
{% url 'org:home' 参数值 %}
图片配置
首先在项目更目录下创建一个media文件夹
model配置
#存放在courses下的年份文件夹下的月文件下
image=models.ImageField(upload_to="courses/%Y/%m", verbose_name="封面图", max_length=100)
settings中配置
#访问图片地址
MEDIA_URL="/media/"
#保存图片地址
MEDIA_ROOT=os.path.join(BASE_DIR,"media")
url中配置
url("^media/(?P<path>).*$",'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),
这样图片就能保存在media文件夹中了,那我们如何取出来呢
在数据库中可以看到图片的地址只需要加上服务器的地址/media/数据库保存的地址就能访问了,那么在前端中如何展示?
这样是能访问但是不利于后期维护,还有一个将media设置前端页面都能访问的办法那就是构造上下文
<img width="200" height="120" class="scrollLoading" data-url="media/{{ org.image }}"/>
构造上下文
他的作用就是不用view传值前端也能访问后台的变量,用media举例
在settings中配置:
<img width="200" height="120" class="scrollLoading" data-url="{{ MEDIA_URL }}{{ org.image }}"/>
这样就解决了不传值也能接却图片地址问题了