• 8)django-示例(url传递参数)


    url传递参数有两种,一个是通过普通分组方式,一个是通过带命名分组方式

    1.传递方式

      1)普通分组方式,传递参数顺序是严格的。如下例子   

        url(r'^detail-(d+)-(d+).html',views.detail), 共传递了两个参数  

                  def detail(request,nid,uid)第一个(d+)传递给了nid,第二个(d+)传递uid,

       但是如果变为detail(request,uid,nid),则第一个(d+)传递给了uid,所以可能会存在传递错误问题

     2) 带命名分组
      url(r'^detail-(?P<nid>d+)-(?P<uid>d+).html', views.detail) 第一个参数一直是传递给nid,第二个参数一直传递给uid,
      所以在视图中不管nid,uid顺序如何,都能传递正确。
      推荐使用带命名分组。

     3)传递的参数很多怎么办?可以用如下方式
      def detail(request, *args,**kwargs):
                a. 
                    url(r'^detail-(d+)-(d+).html', views.detail),
                    
                    def func(request, nid, uid):
                        
                        pass
                
                    def func(request, *args):
                        args = (2,9)
                        
                        
                    def func(request, *args, **kwargs):
                        args = (2,9)
           
                b. 
                    url(r'^detail-(?P<nid>d+)-(?P<uid>d+).html', views.detail)
                    
                    def func(request, nid, uid):
                        pass
                        
                    def funct(request, **kwargs):
                        kwargs = {'nid': 1, 'uid': 3}
                        
                    def func(request, *args, **kwargs):
                        args = (2,9)
        4、 name

    2)渲染页面是动态和静态页面

      通常我们认为带?参数页面为动态的。比如:http://127.0.0.1:8001/detail/?id=3

      动态页面对搜索爬虫不太友好。百度等静态页面更容易收录。可以改静态传递值http://127.0.0.1:8001/detail-3(这里就需要使用命名分组)

      

                {% for row in USER_DICT.values %} <!-- 这里返回的是values-->
            <li><a href="/detail/?id={{ row }}">{{ row }}</a></li>
            {% endfor %}
                    {% for k,v in USER_DICT.items %} <!-- 这里返回的是key,values-->
            <li><a href="/detail-{{ k }}.html">{{ v.name }}</a></li>
            {% endfor %}
        </ul>
  • 相关阅读:
    Python Virtualenv的使用
    Pycharm常用的设置
    Zabbix学习目录
    DELL R740 Raid10与U盘启动项的配置
    Django
    Django
    Django
    Django
    Django
    Django
  • 原文地址:https://www.cnblogs.com/lixiang1013/p/7748156.html
Copyright © 2020-2023  润新知