Python学习第107天(Django的url控制和conf设置)

一、关于如何通过url来实现登录界面的数据提交和获取

  先看一下html部分的文件内容:  

<form action="/register" method="post">
   <p>姓名<input type="text" name="user"></p>
   <p>年龄<input type="text" name="age"></p>
   <p>爱好<input type="checkbox" name="hobby" value="1">篮球
          <input type="checkbox" name="hobby" value="2">足球
          <input type="checkbox" name="hobby" value="3">乒乓球
   </p>
   <p><input type="submit">提交</p>
</form>

  而在django_test下的url.py文件中,对应的url描述为

url(r"register",views.register),

  views.register中的文件内容   

def register(request):
    if request.method=="POST":
        print(request.POST.get("user"))
        print(request.POST.get("age"))
        return HttpResponse("success!")
    return render(request,"register.html")

  这里应该注意的内容有以下几点:

    1.当我们启动127.0.0.1/register,此时我们是直接进入了登录界面,即需要我们输入信息的部分

    2.在def register中我们增加了判断通过request.method == ‘POST’这个语句实现判断是首次登录还是提交数据,因为一旦提交数据则会有出现提交方式的相关信息,此时通过判断,我们就可以了解到目前是属于首次登录还是进行提交;

    3.action="/register"无需完整写出,因为会默认增加127.0.0.1这部分内容

  下面说到增加假名的效果:

  需求:

    例如register在使用的过程中,可能会在多个界面进行使用这一登录界面,如果我们更换了/register所在的路径,就需要逐一对所有使用这一路径的action变量进行更改,这样就非常的不方便,所以此时我们就在url处设置一个假名,在html中的action中调用时使用假名,即使此时的路劲发生了变化也能通过假名查找到原来的路径

    操作如下:  

url(r"register",views.register,name="reg"),

    接着是action处:    

<form action="{% url 'reg' %}" method="post">

  这里特别注意假名reg要用引号括起来

  

二、url的分组方式,这里需要之前的正则部分内容知识  

url(r'article/(\d{4})$',views.article_year),

url(r'article/(?P<year>\d{4})/(?P<month>\d{2})',views.article_year_month),

  上面是不进行命名的后面的是命名的

  这里需要注意的是,一旦命名,后面视图部分的内容就需要与前面的命名完全保持一致

  当然,此时匿名的在后面的视图方法中命名就可以随意了

def article_year(request,y):

    return HttpResponse(y)

def article_year_month(request,year,month):

    return HttpResponse("year:%s  month:%s"%(year,month))

 

三、关于引入jQuery的方法

  首先,Django的render是只能识别html文件的,所以我们像之前那样导入jQuery的方式是没办法实现的

  此时我们需要把jQuery文件放在我们创建的static文件中,而关于static文件的名称引入方式

    1.存放位置确定后,路径的导入是在django_lesson下的settings中进行设定

      STATIC_URL = '/static/' #引用名

           STATICFILES_DIRS = (os.path.join(BASE_DIR,"statics") #实际名 ,即实际文件夹的名字

    此时我们在引入的过程中需要和引用名保持一致

    <script src="/static/jquery-3.1.1.js"></script>

    <script src="{% static 'jquery-3.1.1.js' %}"></script>

    以上为两种导入方式,推荐使用第二种方式,比较灵活,不会写死

 

四、url的conf分类

  需求:京东、淘宝这种网站子链接特别多,如果全部放在urlpatterns之下,会造成很乱,条例不清晰的情况,所以我们在每个单独的app之下创建conf文件,在通过django_lesson下的urlpatterns内容吧关于某一app的所有连接全部导入到对应app下的conf文件中  

from django.conf.urls import url,include
from django.contrib import admin
from blog import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^show_time/', views.show_time),

    url(r'^blog/', include('blog.urls')),  导入到了blog下面的urls文件中
]

  下面是app即blog下的urls.py文件中的内容  

from django.conf.urls import url,include
from django.contrib import admin
from blog import views

urlpatterns = [
    url(r'article/(\d{4})$',views.article_year),
    url(r'article/(?P<year>\d{4})/(?P<month>\d{2})',views.article_year_month),
    url(r'article/(?P<year>\d{4})/(?P<month>\d{2})/\d+',views.article_year_month),
    url(r"register",views.register,name="reg"),

]

  此时需要注意的是,原本可以直接访问的链接,需要在中间增加blog/才能正确导入其中

  明天实现以下登录用户名和用户密码的获取

  同时急需复习一下正则表达式的内容,在url设计中会增加搜索功能。

posted @ 2020-06-13 23:36  崆峒山肖大侠  阅读(288)  评论(0编辑  收藏  举报