• 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设计中会增加搜索功能。

  • 相关阅读:
    Python实现MapReduce,wordcount实例,MapReduce实现两表的Join
    structure needs cleaning
    Lifecycle of an ASP.NET MVC 5 Application
    ASP.NET Integration with IIS 7
    Execution order of modules in IIS7
    Assembly Binding redirect: How and Why?
    Cannot See Worker Processes Icon in IIS
    What is the main difference between a key, an IV and a nonce?
    核心玩法的三要素
    ruby各种循环输出数组元素
  • 原文地址:https://www.cnblogs.com/xiaoyaotx/p/13122320.html
Copyright © 2020-2023  润新知