@@ 跟着 bill 哥 仗剑走开发 系列项目_电商平台billshop , 不定期更新 !
1. 开始创建应用 , 即app 哦。 先做注册功能,它属于用户 模块
## 要在pycharm的terminal中以命令形式做任何事情,必须时刻清醒地检查,虚拟环境的环境码必须和项目中的一致,也要和 pycharm中配置的虚拟环境一致。
@@ 在pycharm的terminal中可以ipip list 一下,看看这些和你 在cmder中的虚拟(环境码)(以及它下面的pip list 是否一致)
怎么创建? 在pycharm的terminal中,还是?
显然,对于我来说,肯定不想去每次纠正验证一下pycharm中的terminal。
肯定是按照常规 在cmder中进行命令。
@创建users app
命令: python manage.py startapp users
但是,按照我的需求,有这么多app ,是不是将来管理起来很乱呢?
所以,我想建一个apps 包(即apps 名字的package),然后将users 也拖到apps中,以后所有的app 都在apps中统一管理,这样就很整洁干净。
2. 创建注册功能
在apps–users–views下定义类,并将自己准备的register.html 复制到templates 下。
@@ 但此时,是不能正常显示的,功能不能实现,原因以下:
首先, app本身我并没有注册,那好,我们走,注册去。
翻山越岭来到 dev.py 搞起
这时候,我想访问一下注册页面,是否可以?
不行啊, 想想看, 路由有没有…
所以啊, 咱 在users下新建一个urls.py,定义这个子路由。
然后我们来到总路由进行定义:
利用include 来进行路由模块化。 path(‘/’,include(‘users.urls’)), 前面这个‘/’的话,那就一直跟着apps的urls 子路由来匹配
好了,运行manage看看效果。咦! 报错了,
@@@@@@@@ 插播小知识点回顾 @@@@@@@
URL模块化
URL中包含另外一个urls模块:
在我们的项目中,不可能只有一个app,如果把所有的app的views中的视图都放在urls.py中进行映射,肯定会让代码显得非常乱。因此django给我们提供了一个方法,可以在app内部包含自己的url匹配规则,而在项目的urls.py中再统一包含这个app的urls。使用这个技术需要借助include函数。
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('book/',include("book.urls"))
]
在urls.py文件中把所有的和book这个app相关的url都移动到app/urls.py中了,django_first/urls.py中,通过include函数包含book.urls,以后在请求book相关的url的时候都需要加一个book的前缀。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
那我们知道了, 是因为include中,没有写完整路由。
这样就运行ok 了。
前端网页中,把users/register/路由写上就能访问了。
@@@
它压根没有找到apps
所以,只要在导包路径中,加入apps,不就搞定了吗?
注意, terminal中可以看到,路径是 一个列表, 所以我们只要把列表中把第一个路径值取出来,添加到sys_path 即可实现,可以用.insert 也可以用.append 。
这里我用了.insert方法 , 注意添加后,删除所有的第二根\, 脚本中只要一根就可以。
那么还有个问题,我总不能把这个路由写成硬编码吧,所以要优化了。记不记得 BASE_DIR,去运行一下当前项目manage看看
路径拼接实现了非硬编码, 这时候,项目路径随便更换都不用再改了。
3. 继续解决展示注册界面的样式加载。
step 1
在register.html中 最上方 {% load static %}
step 2
ctrl+R 差找…/static/
改为{% static‘
执行replace all
好了, 运行一下,看看是否加载完成了。
先到这里, 后续更精彩。