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

Posted 崆峒山肖大侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(rarticle/(d{4})$,views.article_year),

url(rarticle/(?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(rarticle/(d{4})$,views.article_year),
    url(rarticle/(?P<year>d{4})/(?P<month>d{2}),views.article_year_month),
    url(rarticle/(?P<year>d{4})/(?P<month>d{2})/d+,views.article_year_month),
    url(r"register",views.register,name="reg"),

]

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

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

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

以上是关于Python学习第107天(Django的url控制和conf设置)的主要内容,如果未能解决你的问题,请参考以下文章

python之路_day107_django中url反向解析及数据库连接

Python学习第127天(Django至ORM)

Python学习第136天(Django的admin)

Python学习第110天(Django的万能句点号过滤器)

Python学习第105天(Django初步实现)

Python学习第104天(Django前传web框架)