Django 遵从 MVC 模型,并将其特色化为 MTV 模型。模型的核心是通过用户访问的 url 来指向处理的函数,而函数处理后返回相应的结果。所以url决定了用户访问的入口,另外表单处理的提交地址也需要指定的url。url是所有功能的入口,所以url的编写就变得非常重要。

  Django 的 url 编写涉及了 python 的 re 模块,也就是正则表达式,这部分内容需要提前掌握。

  本篇的内容将结合官方的1.8.2的文档进行说明,如果有说明不清的地方可以相应参照官方的文档,我这里提供一个进行中文翻译后的:戳这里

  在进行编写的说明前,我先介绍一下django是如何处理一个请求的:

  1.用户发来一个请求。Django将用户的请求报文等信息封装成HttpRequest对象,然后经过各种中间件处理后,抵达 url 模块进行处理函数的选择。

  2.Django要决定使用哪个模块用作匹配,这个通常由 settings.py 中的 ROOT_URLCONF 的值决定,例如:ROOT_URLCONF = 'test_web.urls' 。就表示将使用 test_web(项目同名app) 这个 app 下的 urls 这个模块文件( 这个模块也称为url的根模块,可修改 )。但如果进来的HttpRequest对象具有一个 urlconf  属性(通过中间件 request processing  设置),则使用这个值来替换 ROOT_URLCONF  设置。(可能会存在版本差异)

  3.Django 加载该 Python 模块并寻找可用的 urlpatterns 变量。它是一个 Python 列表,里面的元素是 django.conf.urls.url() 的实例。

  4.Django 按照正则匹配的方式,依次匹配每个URL 模式,在第一个与请求的URL 匹配的地方停下来(下面也符合的会被忽视)。

  5.一旦其中的一个正则表达式匹配上,Django 将导入并调用给出的视图,它是一个简单的Python 函数(或者一个基于类的视图)。视图将获得如下参数:

    a)  一个HttpRequest 实例(这也是为什么 view 函数的第一个参数要是 request,该实例封装了所有的 http 请求报文的信息)

    b) 如果正则匹配的 url 中使用了括号分组,但却没有为分组进行命名,则使用位置参数的模式为view函数传参。

    c) 如果是命名的分组,则使用关键字传参的方式。但是可以被django.conf.urls.url()的可选参数kwargs覆盖。

  6.如果没有匹配到正则表达式,或者如果过程中抛出一个异常,Django 将调用一个适当的错误处理视图。

  7.函数处理完毕,返回处理后的结果。


官方手册的例子:

from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
url(r'^articles/([0-9]{4})/$', views.year_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]

分析:

  1.若要从 URL 中捕获一个值,只需要在它周围放置一对圆括号。(即正则中的分组匹配)

  2.不需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 而不是 ^/articles。(django自动在域名后添加了/,这个默认行为可以进行改写)

  3.每个正则表达式前面的'r' 是可选的但是建议加上。它告诉Python 这个字符串是“原始的” —— 字符串中任何字符都不应该转义。参见Dive Into Python 中的解释。

一些请求的例子:

  /articles/2005/03/ 请求将匹配列表中的第三个模式。Django 将调用函数views.month_archive(request, '2005', '03')。

/articles/2005/3/ 不匹配任何URL 模式,因为列表中的第三个模式要求月份应该是两个数字。

/articles/2003/ 将匹配列表中的第一个模式不是第二个,因为模式按顺序匹配,第一个会首先测试是否匹配。请像这样自由插入一些特殊的情况来探测匹配的次序。

/articles/2003 不匹配任何一个模式,因为每个模式要求URL 以一个斜线结尾。

   /articles/2003/03/03/ 将匹配最后一个模式。Django 将调用函数views.article_detail(request, '2003', '03', '03')。


命名组

  上面的例子中,虽然实现了参数的传递,但是并没有我们熟知的关键字传参。要使用关键字传参,只有为分组命名就行了。例如:(?P<name>\d+),这个分组表示匹配一个或多个任意的数字,并以 name = 匹配到的数字,如 name = '123' 的方式传给view 函数。

  但是,要注意一点,url 捕获的所以参数都是字符串类型,虽然 \d 在正则中表示匹配数字,但传参的时候,传的是字符串。例如,正则捕获的 123 ,但传参是 '123'。

官方例子

from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
]

分析:

  /articles/2005/03/ 请求将调用views.month_archive(request, year='2005', month='03')函数,而不是views.month_archive(request, '2005', '03')。

  /articles/2003/03/03/ 请求将调用函数views.article_detail(request, year='2003', month='03', day='03')。

匹配/分组算法

下面是URLconf 解析器使用的算法,针对正则表达式中的命名组和非命名组:

  1.如果有命名参数,则使用这些命名参数,忽略非命名参数。

  2.否则,它将以位置参数传递所有的非命名参数。

  根据传递额外的选项给视图函数(下文),这两种情况下,多余的关键字参数也将传递给视图。

注意:

  1.一条 url 中,分组不能同名,否则报错。(初步测试)

  2.所谓的有命名分组就使用命名参数,忽略非命名参数是下面这样的:

url(r'add/(\d+)/(?P<num1>\d+)/(?P<num2>\d+)/', add, name='add'),
def add(request, num1, num2):
num1 = int(num1)
num2 = int(num2)
return HttpResponse(num1 + num2)

  在这里,request 是 Httprequest,是 django 自动传递的,我们只要看 num1 和 num2 两个参数就可以的。这里我的处理函数除了 request 之外还需要 2 个参数,但是我在 url 中使用了三个分组,理论上应该会捕获 3 个参数。

  但是,当我访问 http://127.0.0.1:8000/add/666/321/123/  时,我得到的结果是:

  aaarticlea/png;base64,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" alt="" />

  另外,因为捕获的参数是字符串类型, 所以我使用了 int() 函数进行类型转换,如果不这样的话:

def add(request, num1, num2):

    return HttpResponse(num1 + num2)

得到的结果就是:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJ8AAABmCAIAAABa5NRmAAAN10lEQVR4nO2d/VMbxxnH9Q9p+KHTmWaaznQ6nWmTENd1HCdWBqdpnGTsBCZpXupx3oiRg3EdQ2OHQDDGBGxAxkIxNiDeIl5swLEkJJ8lpNMrBmRJ6O30ilBMfzjpdC+7dydeosl1v8MP3O5ze8/u557dvb3TrCyFJF3Jyu0A0h4K0ZWySqObTCaDwaDD4bBYLGaz2WAwGAwGk8lksVgcDkcgEEgmk3vkKNI2JJYuQRAul8tgMGAYhuO4y+VyuVxOp9PpdJL/4ziOYZjBYHA6nQRB7KnTSCIlTDeZTHq93sXFRbvd7hSSy+Wy2+1Go9Fms60ilVsCdAmCsFgsVquVilQxcrlcVqvVarVms9ktpPKJj24kEiFDtiS0FGAcx00mUzqdLncd/38FpUsQhMlkcjgcpXJlyWQyoQgul8B0k8mkxWIRM9AKCsdxq9X65MmTvfCeIIi9KFYyAtP1er1Wq3XnaElZrdaVlZW98N5ms+1FsZIRgC5BEIuLix6PRwy5np6evr4+fhuPx7O4uLixsbHr3mMYtutlSkkAui6Xy2aziUHb1NRUWVlZWVnZ3t7Ob2mz2bxer6A3Pp9vbm6uv7+/v79/bm7u8ePH/PaILr/YdJPJJLkiIR5tZWXl/v37+edf5EoIz+gbj8e1Wu3MzEwgEMhkMplMJhAITE9Pj4yMxONx2FmILr/YdIPBIIZhJaGtrKzs6OgQPAXDsEgkAnSCIAiVShUMBrlZwWCwr68PNnvipYs1VFQ0MPI1VTJKVRpuGieTWRpPrjgL6orQfIu6sTavRrUFnHFZJyJ9S3e5traWTdfhcAhOlVloBbtlUna73e12cyv05MmT0dHRUChEpWi12rGxMepwfX19bGwMGPdQunlmDLr0VtVUQRhgDRUy1j2RTy2Ya6pk27KgrOD0dZcpqBZ1Y5EX/YBmA02nDth0LRYL/9rF9tA6CwtY3Cr5fL67d+/SU1h0t7a27ty54/P5AK0Foos1VMiqNBBOlDRVoEYWkwoqWNhia0tTJatowCCX2NoimRQDsHjETLeoG/MYYenF/9h0zWaz2+0WiRaompoa4Llut9tsNnPrtLCwEAgEQLUtyu/337t3j5vO1zNvgy7kFHYy10zYAnphWvxZ1I1MumxYxTMa1RZoOo06m67BYIDFbmdnpyBaUrDYNRgM3NoODAxsbm7SU7ixm81mBwYGuOdumy69I6UEiyp2OrdkYQuoLbsLLvbMBXLMEC1ShKXTqJdAt6WlZS/oqtVq1lJla2tra2srPSWbzWo0oFFye3Q1Vewxmdd+T+kypLtcSxNtRN0luiaTCdYz4zheV1cniLa6uhrWM5tMJm6N5ubmWD0zl67f75+fn+eeuw265HwLPC3iuRl+AboWdSNrYkTC20W6/LMqFuB9+/YJLlTRYxc2q5qdnaWncOnOzMyIn1UV8rgtTE5Zgc3OxyM/TYMei7EoCkaXPYxS9JjDcfEYll4csTl0HQ4HjuM8kLYNmPyig1srMU9EWq22tCeiLQAv6FMQyJih3ZkzA02LgtLdxTlzIBAQXM3gAr5+/bogXQzDwuEwsMLpdLq7uxu2mnHt2rVUKgU8sRS6fOMdEAftsZWeTytH2AIwe4PPqhiPrPTZFh08HSksnToAr0QKvq5nAT5w4AC/PTml+vnnn2Es6CuRuVwul8vtdCUSRBe2JgUkz1yUKJ5eNBS2KInuFnNaxVh7KmYAlqQA6eQaFuAtgtPpFPNmlw7466+/5jeGLVSxRL5F6O3t7e3tRW8Rdi7wG0Cj0SjmDSCO4y0tLW1tbfxmHo/HaDSiN4C/vNDbeymL78sb/smzSO3plzexWGwvipWMBL6a2zlds9mMvporl4S/eCWfU0uFSn3xmoI8zCD9AkJfq0tZ6JcmUhb6lZiUhX7hKWWhX2dLWYiulIXoSlmIrpSF6EpZiK6UhehKWQy6jZOO6v4HPH+Nk45yOborWn1wyn33FZ6/1Qenyu3jbopB93ivcd6Tov7uulN3PKlpR2LKkZh2JnR4/HivsVyO7orwmcO5tC6Xnsqlp3JpXS41mUtObCZHNxPazcRoNj6Czxwut4+7KQbdY9fuz3tSP+KJSTwxiSfGbfFRW3xkibhtid3EoretsWPX7pfL0V3Rku7lXFq3mRzeTAxtJm5n44NZ4odsbGAj2p+J9G1E+pd0L5fbx90Ug+5bXQvznlQerT0xaosPW4lbD2M3seiAOXLzYfStrgXe0lQKwM8lZTKZXKmnbPRKuUwmU6hSKb1STmbolfKijV4pV6gYpeqVchkriXUuz+UYwsYP5dJTJNrNPFr1RvR6JtKXDl/NhHux8UOimo2sK9upVEqlUKgAeXknQX6pFHB3BW2oVqCZ0hMYdN+8MjvvSU3YE+P2xNDDaM1FzVNHa393tPb4hYE+Q1Btjrx5ZVbADXAFCqkw+gWRTcL1GcQXnAg6uyjjyIu59NRm4tZmfDBLaDZItOHeTOhqOtiZXu82jrzIW0FGrcBXVyhVpAesylJOiWsEzsXAlWJn8NB9vX1q3pMas8W1S/HqC+o/fdh8WmOoGzD88f3mo4391xdDb3TMrEd53v8IxS6YPtUwVNDqlQqlHhSV+dpz45tRDPQi92+/kEvpsvGbebQRVSbckwl1p4NXUv5LqcAVw/DBOBEUVTKjLsUDvVKery6ZRt4E9FNFNILQDSCTKVQsm3x70FPlSgbdf7ZNzntS2qX4kCX2zMffnRlc1C7Fbj2MfKE2/PlE66lx75Hm4WMdUxMPPBDfhGNXrtSDXVeowMiARRZMWTeAXKnnpzt/80AupcsSmo3oDRJter0rFWhP+pqTa80h678Mwwfv3VasOIahbU+jSI/GgucqBdXSMLopruPsKABdUJx4YvcfLaN3XMnblpj6QfRgQ3/Nd9rWOf+FmbU3mof+9qXq3UHHkebh0aXo0bZxUL2Fbjda9wwYRRnNQ+uehOgWi8pb8jXIrHr/ZnJiI9qfCXWnApcSaxfjj87FPF/G3KeI5XN+46uG4YPpyM1ZDbx/LnhPH/iZYVlwik6XXWmQk5A04U4K3jEw6B5pHp5yxDsWApfm/a9/c/upt8++dLr7RWXXb483fNA1TdK9ql8/0gy+tRmM4LccLHbBdQKOXtulq1Pt2yC0ibUL8ZWm+KNzhPdMzHM66voi4vg05qkn6SYft+pU+yC+F6+jUsDGiMJQKEBXVOyC2ooyyl8b1Ah5MehWXRjU2mJtc/5X6q/+vub8of/0P13z1dPVX71zefLSgo+ke3HWV3VhEFhthstyhYJRgVLmP4wRGDTWbZfueM/zmbAmvnKeWD4b89TH3HVR5+cR/OOw/UTMdYqkSyzXj/c8Dz6/KJVCJpcDLqRXymVyuZwESqPLmgKK7HFBc2IZvcbFAY1zv8iVeiZdRZPmByzyUl3nb177/K1vh76/7+82+Dvv+y/Orp6fXqXoKpo0MF8YsUsdczte3q6bmlqQgzStUQB0OQXwNZy2+7n0eg/hbaBCNoKfDNs+Ci29H3V8RtHVdj/H3+r58OQELjXIcuiy3IINZEzP8/0D9wrFUuQKBeBGL1ycQffwuRvtM64/vF1/rGWofd5XP7GsnFj+Ysz72ain4cdHFN3D524A68yZ7ymUSrlcqeTcbjTnqNrQD8i609uGfoEUJHZBpbI09P2zKf+VfMg6PgnbT4RtH4as761baiL2kxTdoe+fBZ9fqAL94Rz4qEZnnG8GFay29JLZCwNsI855hdtEoRSk+/JZVa9h/dJd76UF35cTy3Vj3tox76ejnpMj7tMTyyTd//746NUmNbfO1N1Im1HQORWbhk23cCYdbiEK2Q9zMk5nAHIESnew45mEry3q+CyCnwzb/h1aej9keXf9YXUQOx62fUTSDbmUw91/h5bNGWT0SjkrSa+UK1QFX/N0yS6UshOMXcYCD6MFWGsH0BI5dF8609v5U+DbOV/TzNr56dVzupWzupX6yWXluLdu3EvSfa3xxjTmhrQszQty3KUzLinKUvQbodgd5BOAdCkreKGa9r/GV7+Juetjrrqoszbi+DSCfxy2nQgtfRha+oCke6vrhWV8EugOeKWBnllocgVFgYx0Jeu5SCB2mV0yHRy0bsI98yddY4fO9PD8nbgyGghHIU33K9DU4HsDbX/h+Zv64Z1YxF9uN3dNDLorKysYhpnhwnF8bW0tFAqVy90diqygCa5fewVZQm/vpSxEV8pCdKUsRFfKkk0jSVeycv/EFGkPhehKWYiulIXoSlmIrpSF6EpZiK6UhehKWYiulIXoSlmIrpSF6EpZiK6UJUCXti8lePuXgiD7SeT3vhOdx9i8ALQfFCwPCSReupoq1p4OxUPmjjuAzbkoFJCN9UB5DN6kEf0aUGeQIBLfMwO3zqPE2N6D2k4EsFcpX574K/I7g5TXntAVSBXOE7wioitKYukKNCcke2d0oRaIrUgJ0AXtoASzAljsgC5gzz5xziAVJbpnhk1k8jMk+N6m26Gb58g7DqBZlbBKeN7l9oeFYCpxNObNK8ynBdihzlmMSlnNAG17t82RE5KXRyuGmvCwjbTt2OXb7rSo0uhiDRWiiaHYFSMeulhDBa35mEOdyMgpiS4vMD5nkGDij136wiBk+soQm03pdLli3FFoIbIkobcIUhaiK2UhulIWoitlIbpSFqIrZSG6UhaiK2UhulIWoitlIbpSFqIrZSG6UhaiK2X9D4wQCNNnTnI3AAAAAElFTkSuQmCC" alt="" />

  字符串的拼接,所以说,捕获的参数都是字符串

  好了,回到正题。我的函数需要除了 request 之外的 2 个参数,但是我在 url 中捕获了三个,得到的结果是后面的两个命名组的参数,也就是多出来的被忽略了

  这就是所谓的当命名组存在的时候,非命名组会被忽略。

  但是,我的 url 是这样写的:

 url(r'add/(\d+)/(?P<num2>\d+)/', add, name='add'),

  我希望前面的未命名组按位置传给 num1 而 num2 使用关键字参数。

  现在,我访问: http://127.0.0.1:8000/add/321/123/

aaarticlea/png;base64,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" alt="" />

  报错的信息是,函数需要 3 个参数,而我们给了 2 个,其中,去除自动传递的 request,也就是我们只捕获到了 1 个参数。

  此时,再看看这句活:当命名组存在时,会忽略非命名组

  因为非命名组捕获的参数被忽略了,所以才导致我们少传了一个参数。

  这个时候,你应该知道这里的忽略是什么意思了吧。


URLconf 在什么上查找

  请求的URL被看做是一个普通的Python 字符串, URLconf在其上查找并匹配。进行匹配时将不包括GET或POST请求方式的参数以及域名

  例如,http://www.example.com/myapp/请求中,URLconf 将查找myapp/。

   在http://www.example.com/myapp/?page=3 请求中,URLconf 仍将查找myapp/。

  URLconf 不检查使用了哪种请求方法。换句话讲,所有的请求方法 —— 即,对同一个URL的无论是POST请求、GET请求、或HEAD请求方法等等 —— 都将匹配到相同的函数。

  但是,我们能限制某个函数只能由某种方式访问,但这里不是 url 这里的内容了,以后再讲。


捕获的参数永远是字符串

  关于这句话我在刚才的 num1 和 num2 相加的示例中已经演示过了,这里记住这句话就行了。


指定视图参数的默认值

  这并不是 django 特有的用法,这是 python中 的函数默认参数的内容。但是django这里能处理一些特殊的情况:

from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^blog/$', views.page),
url(r'^blog/page(?P<num>[0-9]+)/$', views.page),
]
def page(request, num=""):
......
return .....

  在上面的例子中,两个URL模式指向同一个视图views.page —— 但是第一个模式不会从URL 中捕获任何值。如果第一个模式匹配,page() 函数将使用num参数的默认值"1"。如果第二个模式匹配,page() 将使用正则表达式捕获的 num 值。


性能

  urlpatterns 中的每个正则表达式在第一次访问它们时被编译。这使得系统相当快。


urlpatterns 变量的语法

  urlpatterns 应该是一个 python 列表,列表中存放的都是 url() 的实例。


错误处理

  当Django 找不到一个匹配请求的 URL 的正则表达式时,或者当抛出一个异常时,Django 将调用一个错误处理视图。

   这些情况发生时使用的视图通过4个变量指定。它们的默认值应该满足大部分项目,但是通过赋值给它们以进一步的自定义也是可以的。

  完整的细节请参见自定义错误视图。

  这些值可以在你的根URLconf 中设置。在其它URLconf 中设置这些变量将不会生效果。

  它们的值必须是可调用的或者是表示视图的Python 完整导入路径的字符串,可以方便地调用它们来处理错误情况。

这些值是:

handler404 —— 参见django.conf.urls.handler404。

handler500 —— 参见django.conf.urls.handler500。

handler403 —— 参见django.conf.urls.handler403。

handler400 —— 参见django.conf.urls.handler400。

 

 关于这部分我目前也在研究中,以后研究出结果再分享出来。

django-url调度器-初级篇的更多相关文章

  1. Django URL调度器

    Django处理请求的流程 Django确定要使用的根URLconf模块.通常,这是ROOT_URLCONF设置的值,但如果传入 HttpRequest对象具有urlconf 属性(由中间件设置),则 ...

  2. Django 源码小剖: 更高效的 URL 调度器(URL dispatcher)

    效率问题 django 内部的 url 调度机制说白了就是给一张有关匹配信息的表, 这张表中有着 url -> action 的映射, 当请求到来的时候, 一个一个(遍历)去匹配. 中, 则调用 ...

  3. Django 源码小剖: URL 调度器(URL dispatcher)

    在刚开始接触 django 的时候, 我们尝试着从各种入门文档中创建一个自己的 django 项目, 需要在 mysite.urls.py 中配置 URL. 这是 django url 匹配处理机制的 ...

  4. URL 调度器(URL dispatcher)

    URL 调度器(URL dispatcher) 在刚开始接触 django 的时候, 我们尝试着从各种入门文档中创建一个自己的 django 项目, 需要在 mysite.urls.py 中配置 UR ...

  5. django-url调度器-中级篇

    在初级篇中,我们接触了: 1.url 的简单编写 2.两种传参的方式 3.捕获的参数总是字符串 4.为视图设置默认参数 …… 在中级篇中将更进一步. 包含其它的URLconfs 当网站非常大的时候,将 ...

  6. django url注册器组件, 响应器组件, 分页器组件

    一.url注册器的使用 1.1导入模块 from django.urls import re_path, include from .serializer import views from rest ...

  7. django-url调度器-高级篇

    我们在中级篇中学会了如何进行反向解析,但是有这样一个问题,在为 url 命名的时候,名字不能重复,否则会导致各种各样的问题.在 url 还少的时候保证不重名还是比较简单的,但是 url 多起来以后就比 ...

  8. Django url分发器

    视图: 视图一般都写在app的views.py中.并且视图的第一个参数永远都是request(一个HttpRequest)对象.这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等.在视 ...

  9. django url调度

    Django的url配置相同遵循着DRY(dont repeat yourself)的规则.下面都是官方文档的样例: 首先介绍的是Django怎样处理http的请求: 1.在setting里定义ROO ...

随机推荐

  1. C#中char[]与string之间的转换

    string 转换成 Char[] string ss = "abcdefg"; char[] cc = ss.ToCharArray(); Char[] 转换成string st ...

  2. mysql命令整理0919 不定期更新中

    1)新建数据库 create database +database_name:         查询数据库  show databases;       切换数据库   use database_na ...

  3. C#将C++动态库的回调函数封装成事件

    关于C#调用C++动态库的文章很多,调用动态库中回调函数的方法也不在少数.但大多数调用回调函数的方法依然保留了C++的语法特点. 比如有一段C++的回调函数代码,为了表达它的意思,我把注释也粘贴了进来 ...

  4. Spark Job Scheduling

    最近由于项目需要在研究spark相关的内容,形成了一些技术性文档,发布这记录下,懒得翻译了. There are some spaces the official documents didn't e ...

  5. 业务gis 怎么让别的开发人员不需要懂gis就可以搞开发? (五)

    我们稍微搭建了一个比较简单的图形使用模板,flex端操作这里我就不说了,按大家喜好写,最后javascript部分可以通过jsduck工具生成一个开发文档给业务开发人员,前提注释部分要写好,要公开的注 ...

  6. Flex4/Flash多文件上传(带进度条)实例分享

    要求 必备知识 本文要求基本了解 Adobe Flex编程知识和JAVA基础知识. 开发环境 MyEclipse10/Flash Builder4.6/Flash Player11及以上 演示地址 演 ...

  7. Git 使用及原理 总结

    1.  $git diff origin/master master (show me the changes between the remote master branch and my mast ...

  8. (转)TextView属性大全

    TextView属性大全 今天研究了TextView一天了,发现网上有一篇讲TextView属性的,非常全,收藏一下先. 发现TextView有一个比较大的问题,就是文字排版的问题,遇到数字,字母,符 ...

  9. eclipse中logcat偶尔不显示log的问题解决办法

    Android开发过程中  eclipse 经常会出现 logcat突然就是不现实log的情况.经常遇到,一直没有解决.后来解决了,记录一下. 默认的设置是error 改成verbos 问题解决.

  10. span标签之间的空隙

    出现的问题: 在html中,当有两个以及两个以上的span标签并列的时候,如果任意两个span之间换行书写的话,那么他们在页面上展现的时候往往会有空隙 解决的办法有两个: 1.将两个span标签写在同 ...