什么是FBV和CBV?

在早期,视图开发的过程中存在一些常见的语法和模式,于是引入基于函数的通用视图来抽象这些模式,并简化了常见情况下的视图开发。因此,刚开始的时候只有FBV,而Django所做的事情就是向你定义的视图函数传递一个HttpRequest,并且希望返回一个HttpResponse。但是,基于函数的通用视图是有问题的,问题在于它很好地覆盖了简单的情况,但针对稍微复杂的场景,它没有办法在某些配置项之外进行扩展或自定义,从而极大地限制了它在许多实际应用程序中的实用性。而考虑到扩展性与自定义,这正是面向对象技术的强大之处,于是诞生了CBV。

基于类的通用视图与基于函数的通用视图目的都一样,都是为了让视图开发更加容易。但是CBV的解决方案是通过使用mixins,并且django内置了一系列通用视图作为工具集提供给我们继承使用,从而使得基于类的通用视图比基于函数的通用视图更具扩展性和灵活性。Django View视图是可调用的,用来处理请求(request)并且返回响应(response),Django的视图有两种形式:FBV和CBV。那么,什么是FBV和CBV编程模式呢?下面我们就一起通过实例来看看。

我们知道 Python 是一个门面向对象的编程语言。如果我们只用函数来编写视图函数,那么就会造成很多面向对象的优点无法利用起来,比如说封装、继承、多态等。这也是 Django 之所以加入了 CBV 模式的原因。它可以让开发者使用类的形式去编写 View 视图函数。对于使用 CBV 模式优势总结了如下几点:

  • CBV 将整个视图函数的逻辑拆成了类下的多个函数,依靠函数调用来实现完整的逻辑;
  • 提高代码的可复用性,更加灵活,让开发者使用面向对象的技术,比如多继承、多态等;
  • 可以用不同的函数针对不同的 HTTP 方法处理,而不是通过很多 if 判断,提高代码可读性。

当然 CBV 也不是万能的,当继承关系变得很复杂,亦或是代码不是特别规整的时候,这时要去找某一个函数到底是被哪一个父类重载也是一个麻烦事。此时使用 FBV 模式就变的很方便,所以还是要理解它们两者的区别,在合适的场景选用合适的方法,不能把其中某一种模式视为唯一。总体上来说 CBV 的模式,在实际的开发工作中使用的相对较多,所以我们要掌握这种编写 view 视图函数的模式。

FBV(基于函数的视图)

FBV(function based views),即基于函数的视图;CBV(class based views);也是基于对象的视图。说白了就是在每一个views中添加自己专用的方法。FBV 简单易懂,但是难以复用。它们不能像 CBV 那样能从父类中继承。FBV 的编写指南要求我们:视图代码越少越好;视图代码不能重复;视图应该只处理呈现逻辑。业务逻辑应尽可能放在数据模型中,或者表单对象中;视图代码要保持简单;使用它们来编写自定义的 403, 404, 500 等错误处理器;避免使用嵌套的 if 块。CBV是View类的集成类;这里的主要区别在于请求是以HTTP方法命名的类方法内处理的,例如GET ,POST ,PUT ,HEAD等。所以,在这里,我们不需要做一个条件来判断请求是一个 POST 还是它是一个 GET 。代码会直接跳转到正确的方法中,在 View 类中内部处理了这个逻辑。

我们首先在Django项目的URL中添加如下内容urls.py:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login/$', account.login),
]

添加完成之后我们通过FBV来写一个简单的Login登录模块(views.py):

# 登录验证
def login(request):
    message = ""

    if request.method == "POST":
        user = request.POST.get('username')
        pwd = request.POST.get('password')
        c = Administrator.objects.filter(username=user, password=pwd).count()
        if c:
            request.session['is_login'] = True
            request.session['username'] = user
            return redirect('/index.html')
        else:
            message = "用户名或密码错误"

    return render(request, 'login.html', {'msg': message})

简单讲,FBV就是在views.py文件中定义函数来处理用户请求,函数中再定义如果是GET请求怎么处理,POST请求怎么处理,等等!

CBV(基于类的视图)

CBV是基于类的视图,就是使用了类来处理用户的请求,不同的请求我们可以在类中使用不同方法来处理,这样大大的提高了代码的可读性。CBV允许我们使用不同的实例方法来响应不同的HTTP请求方法,而不是像FBV那样使用条件分支代码。但是定义的类要继承父类View,所以我们在使用CBV的时候需要提前引入库:from django.views import View

执行对应请求的方法前会优先执行 dispatch 方法(在get/post/put…方法前执行),dispatch() 方法会根据请求的不同调用相应的方法来处理。其实,在我们前面学到的知识都知道 Django 的 url 是将一个请求分配给可调用的函数的,而不是一个类,那是如何实现基于类的视图的呢? 主要还是通过父类 View 提供的一个静态方法 as_view() ,as_view 方法是基于类的外部接口, 他返回一个视图函数,调用后请求会传递给 dispatch 方法,dispatch 方法再根据不同请求来处理不同的方法。

我们首先在Django项目的URL中添加如下内容urls.py:

urlpatterns = [
    path("login/", views.Login.as_view()),
]

添加完成之后我们通过CBV来写一个简单的GET和POST方法(views.py):

from django.shortcuts import render,HttpResponse
from django.views import View

class Login(View):
    def get(self,request):
        return HttpResponse("GET 方法")

    def post(self,request):
        user = request.POST.get("user")
        pwd = request.POST.get("pwd")
        if user == "runoob" and pwd == "123456":
            return HttpResponse("POST 方法")
        else:
            return HttpResponse("POST 方法 1")

CBV 体现了 Python 面向对象这一语言特性。CBV 是通过类的方式来编写视图函数。这相比较于 function,更能利用面向对象中多态的特性,因此更容易将项目中比较通用的功能抽象出来。CBV 的实现原理大家可以通过看 Django 的源码就进一步的理解,大概流程就是由 path 路由的 as_view() 创建一个类的实例由此关联到类视图,关联到类视图之后,通过 CBV 内部的 dispatch() 方法进行请求的分发处理,处理完成后并将 Response 返回。

注:当我们使用CBV方式时,首先要注意urls.py文件中要写成“类名.as_view()”方式映射,其次在类中我们定义的get/post方法这些方法的名字不是我们自己定义的,而是按照固定样式,View类中支持以下方法:

http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']

当我们发送GET请求时,类自动将GET请求转到get方法去处理,其他请求同理!

注:

  • cbv定义类的时候必须要继承view;
  • 在写url的时候必须要加as_view;
  • 类里面使用form表单提交的话只有get和post方法;
  • 类里面使用ajax发送数据的话支持定义以下很多方法。

推荐文章

426条评论

  1. Really informative blog article. Thanks Again. Really Great. Tiffie Nathan Guenzi

  2. Hi there to all, the contents existing at this website are truly remarkable for people experience, well, keep up the good work fellows. Dorita Lock Alphonsine

  3. My spouse and I stumbled over here from a different page and thought I should check things out. Eleanora Zolly Dietrich

  4. This paragraph will help the internet users for setting up new website or even a blog from start to end.| Ciel Brennen Amalberga

  5. Takipçi satın almak için tıklayın. Hemen tıklayın ve
    takipçi satın al sayfamızdan takipçi satın alın.

  6. Why users still use to read news papers when in this technological world all is existing on web? Jobyna Felizio Heman

  7. Hello, I think your blog could possibly be having internet browser compatibility problems. Siouxie Grantham Lawford

  8. Thanks for your marvelous posting! I certainly enjoyed reading it, you may be a great author. I will make certain to bookmark your blog and definitely will come back from now on. I want to encourage yourself to continue your great posts, have a nice weekend! Neala Hew Deaner

  9. Awesome post. I am a regular visitor of your website and appreciate you taking the time to maintain the nice site. I will be a regular visitor for a long time. Dede Dukey Batchelor

  10. Thanks so much for the article post. Really looking forward to read more. Fantastic. Giulietta Wilmar Belshin

  11. Enjoyed every bit of your post. Much thanks again. Fantastic. Babita Prescott Petulah

  12. Great amazing things here. I am very happy to see your post. Thank you a lot and i am having a look forward to touch you. Will you please drop me a e-mail? Catie Franciskus Taro

  13. such a perfect means of writing? I ave a presentation subsequent week, and I am at the search for such information. Feel free to surf to my homepage; wellness blog Iormina Gaby Gerfen

  14. I truly appreciate this article post. Really looking forward to read more. Awesome. Twila Dennis Ferd

  15. Im obliged for the article. Really thank you! Cool. Miof Mela Bard Schick

  16. I really like your writing style, fantastic info , thanks for putting up : D. Brandise Giacomo Bushweller

  17. Oh my goodness! Incredible article dude! Many thanks, However I am experiencing issues with your RSS. Kirby Branden Elora

  18. Thanks for sharing your info. I really appreciate your efforts and I am waiting for your further post thank you once again. Murielle Brody Gayleen

  19. Some genuinely nice and useful information on this site, too I conceive the pattern holds wonderful features. Gretal Walton Gotthard

  20. When I initially left a comment I seem to have clicked the -Notify me when new comments are added- checkbox and now whenever a comment is added I get four emails with the same comment. Is there a way you are able to remove me from that service? Thank you! Allix Ennis Cyb

  21. Good post. I learn something totally new and challenging on sites I stumbleupon on a daily basis. It will always be useful to read articles from other authors and use a little something from their websites. Nettie West Geralda

  22. I was very pleased to find this site. I want to to thank you for your time for this particularly fantastic read!! I definitely loved every part of it and i also have you saved to fav to check out new stuff in your website. Loralee Arman Blakeley

  23. Very quickly this website will be famous among all
    blog viewers, due to it’s fastidious articles

  24. I every time used to read post in news papers but now as I am
    a user of internet thus from now I am using net for posts,
    thanks to web.

  25. Fabulous, what a website it is! This blog gives helpful facts to us, keep it up.

  26. Right here is the right site for anyone who wants to understand this topic.
    You know a whole lot its almost hard to argue with you (not that I personally will
    need to…HaHa). You definitely put a brand new spin on a topic
    that’s been written about for years. Excellent stuff, just wonderful!

  27. Thank you for sharing your info. I really appreciate
    your efforts and I will be waiting for your further post thanks once again.

  28. Heya terrific website! Does running a blog similar to this take a lot of work?
    I’ve very little understanding of coding but I was hoping to start
    my own blog soon. Anyway, if you have any ideas or tips
    for new blog owners please share. I know this is off topic nevertheless I just had to
    ask. Cheers!

  29. Hola! I’ve been reading your blog for a long time now
    and finally got the bravery to go ahead and give you a shout out from Lubbock Texas!
    Just wanted to say keep up the fantastic work!

  30. Wow, superb blog layout! How long have you been blogging for?

    you made blogging look easy. The overall look of your web site
    is magnificent, as well as the content!

  31. Pretty element of content. I simply stumbled upon your website and in accession capital to say that
    I get in fact loved account your blog posts. Any way I will be subscribing to your
    feeds or even I success you access consistently quickly.

    Here is my web page … CBD for dogs

  32. I don’t even know how I ended up here, but I thought this post was good.
    I do not know who you are but definitely you’re going to a famous blogger if you are not already 😉 Cheers!

  33. Hello! I simply wish to offer you a big thumbs up for the excellent information you have here on this post.
    I will be returning to your website for more soon.

  34. Simply desire to say your article is as surprising.

    The clarity for your post is just excellent and that
    i could assume you are a professional in this subject.
    Well together with your permission let me to seize your feed to stay up to date
    with drawing close post. Thanks one million and please keep
    up the enjoyable work.

  35. I’m really impressed with your writing skills as well as with the layout on your
    blog. Is this a paid theme or did you modify it yourself?
    Either way keep up the nice quality writing, it is rare
    to see a nice blog like this one nowadays.

  36. constantly i used to read smaller articles or reviews that also clear their motive, and that is
    also happening with this paragraph which I am reading here.

  37. I have to thank you for the efforts you have put in writing this site.

    I really hope to view the same high-grade blog posts from you in the future as well.

    In fact, your creative writing abilities has motivated me to get my
    own blog now 😉

    My page: cbd gummies

  38. Simply want to say your article is as astonishing. The clearness for
    your submit is simply nice and that i could assume you’re an expert in this subject.
    Fine along with your permission allow me to grasp your feed to keep up to date with drawing close
    post. Thank you 1,000,000 and please continue the gratifying work.

    my web site – cbd gummies

  39. I’m not sure why but this blog is loading very slow for me.
    Is anyone else having this problem or is it a issue on my end?
    I’ll check back later and see if the problem still exists.

  40. Valuable information. Fortunate me I discovered your site unintentionally, and I’m stunned why this
    twist of fate didn’t took place earlier! I bookmarked it.

  41. Actually no matter if someone doesn’t understand
    then its up to other visitors that they will help,
    so here it occurs.

  42. Hi there! This is kind of off topic but I need some guidance from an established blog.
    Is it very hard to set up your own blog? I’m not very techincal but I can figure things out pretty quick.
    I’m thinking about setting up my own but I’m not sure where to start.
    Do you have any ideas or suggestions? Many thanks
    asmr 0mniartist

  43. Terrific work! This is the kind of information that
    should be shared around the internet. Disgrace on the search engines for now not positioning this submit
    upper! Come on over and talk over with my web site . Thank you
    =) asmr 0mniartist

  44. Greetings from Los angeles! I’m bored to
    tears at work so I decided to browse your website
    on my iphone during lunch break. I really like the information you
    present here and can’t wait to take a look when I get home.

    I’m surprised at how fast your blog loaded on my cell phone ..

    I’m not even using WIFI, just 3G .. Anyhow, very good blog!
    0mniartist asmr

  45. Keep on writing, great job! 0mniartist asmr

  46. Hey! I know this is kinda off topic however I’d figured I’d ask.
    Would you be interested in exchanging links or maybe guest writing a blog
    post or vice-versa? My site goes over a lot of the
    same topics as yours and I believe we could greatly benefit from each other.
    If you might be interested feel free to send me an e-mail.
    I look forward to hearing from you! Terrific blog by the way!

  47. You really make it seem really easy together with your
    presentation but I find this topic to be actually one thing that I feel I’d by no means understand.
    It sort of feels too complex and extremely extensive for me.
    I’m looking forward in your next publish, I’ll attempt
    to get the hang of it!

  48. Wonderful site. A lot of useful info here. I am sending it to some friends ans
    additionally sharing in delicious. And certainly,
    thank you in your sweat!

  49. Thankfulness to my father who shared with me concerning this blog, this website is actually amazing.

  50. Please let me know if you’re looking for a writer for your
    site. You have some really great posts and I think I would be a good asset.
    If you ever want to take some of the load
    off, I’d love to write some material for your blog in exchange
    for a link back to mine. Please send me an e-mail if interested.
    Many thanks!

  51. Hi there, I enjoy reading all of your post. I wanted to write a little comment to support you.

  52. What you said made a ton of sense. However, what about this?
    suppose you added a little information? I am not suggesting your information is not good.,
    however what if you added something that makes
    people desire more? I mean 什么是FBV和CBV? – 邹坤个人博客
    is a little plain. You might peek at Yahoo’s front page and watch how they create article headlines to grab viewers to open the links.
    You might add a video or a pic or two to grab readers interested about what
    you’ve written. In my opinion, it might make your posts a little livelier.

  53. Hi there! Do you use Twitter? I’d like to follow you if that would be okay.
    I’m undoubtedly enjoying your blog and look forward to new posts.

  54. It’s going to be end of mine day, except
    before ending I am reading this great piece of writing
    to increase my know-how.

  55. Oh my goodness! Impressive article dude! Many thanks, However I am going through problems
    with your RSS. I don’t know why I am unable to join it.
    Is there anyone else having the same RSS problems?

    Anyone who knows the answer can you kindly respond?
    Thanx!!

  56. Hello, all the time i used to check website posts here in the early hours in the dawn, as i love to learn more and more.

  57. Marvelous, what a web site it is! This web
    site gives valuable facts to us, keep it up.

  58. Instagram’da popüler olmak için insanlar instagram takipçi sayılarını arttırmaya başlıyor. Hem canlı yayınlar sayesinde para kazanmak hem de instagram tarafından gelir elde etmek isteyenler kısa sürede para kazanma ayalarını açmak için 1.000 takipçi sayısına ulaşmayı hedefliyor. Hesaplarınızı kısa sürede 1k takipçi sayısına ulaştıracak takipcibonus.com her zaman hızlı ve etkili bir takipçi gönderimi uygular. Sipariş verebilir ve en ucuz fiyattan instagram takipçi satın alabilirsiniz.

  59. Thanks for sharing your thoughts on php shell. Regards

  60. I am grateful to you for this beautiful content. I have included the content in my favorites list and will always wait for your new blog posts.

  61. Remarkable things here. I’m very glad to see your article.

    Thanks a lot and I’m having a look ahead to touch you.

    Will you kindly drop me a mail?

  62. I know this if off topic but I’m looking into starting
    my own weblog and was curious what all is needed to get set up?

    I’m assuming having a blog like yours would cost a pretty penny?
    I’m not very web smart so I’m not 100% sure.
    Any suggestions or advice would be greatly appreciated. Thanks

  63. I needed to thank you for this great read!! I certainly loved every little bit of it.
    I have got you book-marked to look at new stuff
    you post…

  64. I am grateful to you for this beautiful content. I have included the content in my favorites list and will always wait for your new blog posts.

  65. This post will help the internet visitors for creating new website or
    even a weblog from start to end.

  66. Have you ever thought about creating an ebook or guest authoring on other sites?
    I have a blog based on the same topics you discuss and would really like to have you share some stories/information. I know my visitors would enjoy your work.

    If you’re even remotely interested, feel free to send me an e mail.

  67. I’m more than happy to uncover this web site.
    I need to to thank you for ones time for this particularly fantastic read!!
    I definitely liked every bit of it and I have you saved to fav
    to see new information on your website.

  68. I want to to thank you for this fantastic read!!

    I certainly loved every bit of it. I’ve got you book marked to look at new things you post…

  69. First of all I would like to say awesome blog! I had a quick question which I’d like to ask if you do
    not mind. I was interested to know how you center yourself and
    clear your head before writing. I’ve had a hard time clearing my thoughts in getting my thoughts
    out. I truly do enjoy writing however it just seems like the first 10 to 15 minutes tend to be lost just trying to figure out how to begin. Any ideas or tips?
    Appreciate it!

  70. Heya i am for the first time here. I came across this board and I in finding It really
    helpful & it helped me out a lot. I am hoping to offer one thing again and aid others such as you helped me.

  71. Hello, I think your blog might be having browser compatibility issues.

    When I look at your blog in Ie, it looks fine but
    when opening in Internet Explorer, it has some overlapping.
    I just wanted to give you a quick heads up! Other then that, terrific
    blog!

  72. The article is really excellent. Every time I read it,
    Really thank you for this beautiful article, it was a very informative article.

  73. The article is really excellent. Every time I read it, I get information again.
    The best article I’ve read in a long timee.

  74. Its like you read my mind! You seem to know so much
    about this, like you wrote the book in it or something.
    I think that you can do with some pics to drive the message home a bit, but instead of
    that, this is wonderful blog. A great read. I will definitely be back.

  75. The article is really excellent. Every time I read it, I get information again.

  76. Thank you for this beautiful article. Waiting for the more …

  77. İnstagram takipçi satın al hizmeti ile takipçi sayını arttırmaya başla! Türkiye’nin en güvenilir instagram takipçi satın alma sitesi ile takipçi sayınızı arttırmak çok kolay. Güvenilir ve ucuz instagram takipçi satın alma paketleri sunan sitemiz ile güvenilir bir şekilde hesabını yükselişe geçir! İnstagram güvenilir takipçi satın almak için sitemizi ziyaret edin.

  78. Nice post. I learn something totally new and challenging on websites
    I stumbleupon on a daily basis.
    It will always be helpful to read content from other authors and practice something from their

  79. At this moment I am going to do my breakfast, later than having my breakfast
    coming again to read further news.

  80. Tasarım Firması İçin Tıkla. Tasarım Firması Bul.

  81. Spot on with this write-up, I actually feel this
    website needs a great deal more attention. I’ll probably be returning to see
    more, thanks for the information!

  82. mobil ödeme takipçi satın al

    Example: Comment1

  83. My relatives every time say that I am wasting my time here at net, however I
    know I am getting know-how all the time by reading thes
    good articles.

  84. What i don’t realize is in reality how you’re not really
    much more well-liked than you may be now. You are so intelligent.
    You already know thus significantly when it comes to
    this subject, produced me in my opinion consider it from a lot of
    numerous angles. Its like women and men don’t seem to be fascinated until it’s something to accomplish with Girl gaga!
    Your individual stuffs great. Always take care of it
    up!

  85. You can check the oil tank to make sure that the oil is sufficient if this is your heating method. If you have exhausted all checks and the heater is still down, you should contact the emergency plumber. Gas leakage is a serious emergency, and once you smell gas, you must turn off the main valve. Then you should immediately contact the plumber, as a gas leak can lead to an explosion, which can lead to injury and even death.

  86. May I simply say what a comfort to find someone that genuinely understands what they’re talking about on the net.
    You certainly understand how to bring an issue to light and make it important.
    A lot more people should read this and understand this side of the story.
    I can’t believe you aren’t more popular since you most certainly have the gift.

  87. My family always say that I am wasting my time here at web, except I know I am getting know-how every day by reading thes nice articles or reviews.

  88. Spot on with this write-up, I actually feel this
    website needs a great deal more attention. I’ll probably be returning to see
    more, thanks for the information!

  89. My relatives every time say that I am wasting my time here at net, however I
    know I am getting know-how all the time by reading thes
    good articles.

  90. It is impossible to have a building that functions properly, without the services of a professionell plumber. The construction requires a water supply system that does not contain contaminants, and also requires a well-functioning drainage system. The building also requires a heating system that works well and machines that are well maintained and maintained

  91. Nice bro thank you. pubg mobile uc hilesi

  92. The emergence of digital currency has had significant impacts on almost all sectors. The entertainment industry is finding itself in the middle of market disruption. These transformations called for introducing crypto casinos in the gambling market, which leverages blockchain technology, such as RooBet.

  93. I just like the helpful information you supply for your articles.
    I’ll bookmark your blog and take
    a look at once more here frequently.
    I’m relatively certain I
    will be told many new stuff proper right here!

    Good luck for the next!

  94. My relatives every time say that I am wasting my time here at net, however I
    know I am getting know-how all the time by reading thes
    good articles.

  95. Pretty section of content. I just stumbled upon your weblog and
    in accession capital to assert that I acquire actually enjoyed account your blog
    posts. Anyway I’ll be subscribing to your augment and
    even I achievement you access consistently quickly

  96. your blog is very nice, you have great content, I like it very much, well done istanbul esc sektoründe en kaliteli site oalrak yer almaktayız sizleri de sitemize bekliyoruz. Yüzelrce ilanlar arasında isteyipte beğendiğiniz tüm bayanlarla görüşme imkanına sahipsiniz.

  97. Hello it’s me, I am also visiting this site regularly, this website is actually good and
    the viewers are actually sharing pleasant thoughts.

  98. [url=http://nighlending.com/]get cash[/url]

  99. My relatives every time say that I am wasting my time here at net, however I
    know I am getting know-how all the time by reading thes
    good articles.

  100. good best buy site social media and seo.

  101. Everything is very open with a precise clarification of the
    issues. It was truly informative. Your site is very useful.

    Many thanks for sharing!

  102. Spot on with this write-up, I actually feel this
    website needs a great deal more attention. I’ll probably be returning to see
    more, thanks for the information!

  103. Thank you for this beautiful article. It’s really a good article

  104. Great work! This is the kind of information that are meant
    to be shared across the net. Disgrace on the search engines for
    not positioning this publish upper! Come on over and consult with
    my web site . Thanks =)

  105. Hi would you mind sharing which blog platform you’re working with?
    I’m looking to start my own blog soon but I’m having a tough time choosing between BlogEngine/Wordpress/B2evolution and Drupal.

    The reason I ask is because your layout seems different then most blogs and
    I’m looking for something completely unique.
    P.S My apologies for getting off-topic but I had to ask!

  106. I just like the helpful information you supply to your articles.
    I will bookmark your weblog and take a look at once more right
    here frequently. I am rather certain I’ll be informed many new stuff proper here!

    Best of luck for the following!

  107. Welcome to Dopinger’s Udemy channel. Here, we will be answering your questions about SEO and digital marketing through our free SEO course and tutorials.

  108. Nice article, wonderful blog ! Keep going…

  109. Best article ever seen! Thanks for your wonderful blog.

  110. I’ve been exploring for a little for any high quality articles or weblog posts
    on this kind of area . Exploring in Yahoo I
    ultimately stumbled upon this website. Reading this information So
    i’m happy to show that I’ve a very excellent uncanny feeling I found out
    just what I needed. I such a lot indubitably will make
    certain to don?t forget this web site and give it
    a look regularly.

  111. Very good informations! Loved your blog. Keep going…

  112. buy hacklink and viagra instagram shop best buy site.

  113. buy hacklink and viagra instagram shop best buy site.

  114. Wow that was odd. I just wrote an incredibly long comment
    but after I clicked submit my comment didn’t appear. Grrrr…

    well I’m not writing all that over again. Anyway, just
    wanted to say wonderful blog!

  115. Lovely blog and wonderful informations. Following…

  116. Nice Article, very good informations. Liked your blog…

  117. Say, you got a nice blog post.Much thanks again. Great.

  118. Thanks for sharing your thoughts about delta 8
    gummies. Regards

  119. Greetings! I know this is somewhat off topic but I was wondering if you knew
    where I could locate a captcha plugin for my comment form?
    I’m using the same blog platform as yours and I’m having trouble finding
    one? Thanks a lot..!

  120. Google instagram hacklink ve viagra satın al.

  121. Google instagram hacklink ve viagra satın al.

  122. My relatives every time say that I am wasting my time here at net, however I
    know I am getting know-how all the time by reading thes
    good articles.

  123. you are best, very nicee blog your amazing site.

  124. you are best, very nicee blog your amazing sittte.

  125. yoou are best, very nicee blog your ammazing site.

  126. you are best, very nicee blog your amazing sitse.

  127. you are best, very nicee blog your amazing sitse.

  128. yyou are best, very nice blog your amazing site.

  129. Woah! I’m really loving the template/theme
    of this blog. It’s simple, yet effective. A lot of times it’s difficult to get
    that “perfect balance” between usability and appearance.
    I must say that you’ve done a amazing job with this.
    In addition, the blog loads extremely quick for me on Opera.
    Outstanding Blog!

  130. your arrticles are very good and your blog site is really good

  131. The article is quite interesting, can I post pictures from it on my blog?

  132. your articles are very good and your blog ssite is really good

  133. your articles are very good and your blog site is really good

  134. The words of peace want to make people live in peace, a site created in this sense. your site is very good thank you

  135. your articles are very good aand your blog site is really good

  136. your articles are very good and your blog site3 is really good

  137. Yorur articles and comments are really nice. We wish you luck. good day.

  138. Admiring the hard work you put into your website
    and in depth information you provide. It’s good to come across a blog every once in a
    while that isn’t the same out of date rehashed material.
    Wonderful read! I’ve bookmarked your site and I’m including your
    RSS feeds to my Google account.

  139. Really when someone doesn’t know after that
    its up to other visitors that they will assist, so here it happens.

  140. Your articles and comments are really nice. We wiish you luck. good day.

  141. Wow, this piece of writing is fastidious, my younger sister is analyzing these kinds of things, therefore
    I am going to let know her.

  142. Great goods from you, man. I’ve understand your stuff previous to and you
    are just too fantastic. I actually like what you have acquired here,
    certainly like what you’re stating and the way in which you say it.
    You make it enjoyable and you still care for to
    keep it smart. I cant wait to read much more from you.
    This is really a great website.

  143. My relatives every time say that I am wasting my time here at net, however I
    know I am getting know-how all the time by reading thes
    good articles.

  144. You ought to take part in a contest for one of the best blogs on the net.
    I am going to highly recommend this website!

  145. Your style is very unique in comparison to other folks I have read stuff from.
    Thank you for posting when you’ve got the opportunity, Guess I will just book mark this
    web site.

  146. Thanks , I have recently been looking for information approximately this topic for a long time and yours is the best
    I have came upon till now. But, what concerning the bottom line?

    Are you certain concerning the supply?

  147. your bloogs contain real information and you guys post great articles. we are grateful to you.

  148. Hi, I think your website might be having browser compatibility issues.
    When I look at your website in Ie, it looks fine
    but when opening in Internet Explorer, it has some overlapping.
    I just wanted to give you a quick heads up! Other then that,
    amazing blog!

  149. Simply wish to say your article is as amazing. The clearness in your post is simply great and i
    can assume you are an expert on this subject.
    Fine with your permission let me to grab your feed to keep up
    to date with forthcoming post. Thanks a million and please keep
    up the rewarding work.

  150. Youu are sharing really good articles. thanks.

  151. Having read this I thought it was extremely informative.
    I appreciate you spending some time and effort to put this content together.
    I once again find myself spending a lot of time both reading
    and commenting. But so what, it was still worth it!

  152. Thanks for one’s marvelous posting! I seriously
    enjoyed reading it, you may be a great author.I will always bookmark your blog and will often come back someday.
    I want to encourage continue your great posts,
    have a nice holiday weekend!

  153. Good article! We are linking to this particularly great content on our site.
    Keep up the great writing.

  154. Today, I went to the beach front with my kids.
    I found a sea shell and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She put the shell to her ear and screamed.

    There was a hermit crab inside and it pinched her ear.
    She never wants to go back! LoL I know this is
    completely off topic but I had to tell someone!

  155. I always used to read piece of writing in news papers but now
    as I am a user of web so from now I am using net for content, thanks to web.

  156. Does your website have a contact page? I’m having problems locating
    it but, I’d like to shoot you an email. I’ve got some ideas for
    your blog you might be interested in hearing.
    Either way, great website and I look forward to seeing it
    develop over time.

  157. This is the perfect webpage for anyone who would like to find out about this topic.
    You understand so much its almost tough to argue with you (not that I really would want to…HaHa).
    You definitely put a new spin on a subject which has been written about for many years.
    Great stuff, just great!

  158. Hi would you mind stating which blog platform
    you’re working with? I’m planning to start my own blog soon but
    I’m having a tough time making a decision between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your design seems different then most blogs and I’m looking for something completely unique.

    P.S Sorry for being off-topic but I had to ask!

  159. Definitely believe that which you said. Your favorite
    reason seemed to be on the web the simplest thing to be aware
    of. I say to you, I definitely get annoyed while people think about worries
    that they plainly do not know about. You managed to hit the
    nail upon the top as well as defined out the whole thing without having side-effects , people can take a signal.
    Will probably be back to get more. Thanks

  160. I don’t even know how I ended up here, but I thought this post was great.

    I do not know who you are but definitely you are going to a
    famous blogger if you are not already 😉 Cheers!

  161. I know this if off topic but I’m looking into starting my
    own weblog and was wondering what all is required to get set up?
    I’m assuming having a blog like yours would cost a pretty penny?
    I’m not very web savvy so I’m not 100% positive.

    Any tips or advice would be greatly appreciated. Thanks

  162. whoah this blog is wonderful i love studying your articles.
    Stay up the good work! You know, a lot of persons are hunting around for this information, you could help them greatly.

  163. Heya just wanted to give you a quick heads up and let you know a few of the pictures aren’t loading correctly.
    I’m not sure why but I think its a linking issue.

    I’ve tried it in two different internet browsers and both
    show the same results.

  164. Incredible! This blog looks just like my old one! It’s on a totally different topic but it has pretty much the same layout and design.
    Outstanding choice of colors!

  165. What’s Taking place i’m new to this, I stumbled upon this I have found It positively
    useful and it has helped me out loads. I am hoping to give
    a contribution & aid other users like its
    helped me. Good job.

  166. Hey There. I found your blog the use of msn.
    This is a really well written article. I’ll make sure to bookmark it and
    come back to read extra of your useful info. Thanks for the post.

    I’ll definitely return.

  167. My brother recommended I might like this web site.
    He was entirely right. This post truly made my day. You can not imagine
    just how much time I had spent for this info! Thanks!

  168. Greetings from Colorado! I’m bored to tears at work so I decided to browse
    your site on my iphone during lunch break. I love the knowledge you present here and can’t wait to take a
    look when I get home. I’m shocked at how quick your blog loaded on my cell phone ..
    I’m not even using WIFI, just 3G .. Anyways, excellent site!

  169. Yes! Finally something about kamagra100.

  170. Wow, this post is pleasant, my younger sister is analyzing these kinds of things, so I am going to let know her.

  171. It’s perfect time to make some plans for the future
    and it’s time to be happy. I have read this post and if I could I
    desire to suggest you few interesting things or suggestions.

    Maybe you could write next articles referring to this
    article. I want to read more things about it!

  172. Thanks for finally writing about > 什么是FBV和CBV? – 邹坤个人博客 < Loved it!

  173. Hello everybody, here every one is sharing these familiarity, thus it’s fastidious to read this weblog,
    and I used to go to see this web site every day.

  174. It is not my first time to pay a visit this web page, i am
    browsing this web page dailly and take pleasant data
    from here all the time.

  175. Hi there, always i used to check webpage posts here early in the break of
    day, for the reason that i like to find out more
    and more.

  176. It is perfect time to make a few plans for the longer term and it is time to be happy.

    I’ve learn this submit and if I may I wish to counsel you some
    attention-grabbing issues or tips. Perhaps you can write next articles relating
    to this article. I wish to read more issues about it!

  177. I like the helpful information you provide on your articles.
    I’ll bookmark your weblog and take a look at once more
    right here frequently. I’m somewhat sure I’ll be told many new stuff proper right here!
    Best of luck for the next!

  178. It’s a pity you don’t have a donate button! I’d certainly donate to this superb
    blog! I guess for now i’ll settle for bookmarking and adring your RSS feed to my Google account.
    I look forward to fresh updates and will share this site with my Facebook group.

    Chat soon!

  179. Hey! This post couldn’t be written any better! Reading
    through this post reminds me of my previous room mate!
    He always kept talking about this. I will forward this
    post to him. Fairly certain he will have a good read.

    Thank you for sharing!

  180. Exceptional post however I was wanting to know if you could write a litte
    more on this subject? I’d be very thankful if you could elaborate a little bit more.
    Many thanks!

  181. Hi there to every single one, it’s genuinly
    a fastidious for me tto pay a visit this web site,
    it includes important Information.

  182. You’re so awesome! I don’t suppose I’ve read through
    something like this before. So good to find someone
    with some unique thoughts on this topic. Seriously..
    thank you for starting this up. This website is one thing that is required on the web, someone with some originality!

  183. WOW just what I was looking for. Came here by searching for Destin FL Mortgage Broker

  184. Pretty great post. I just stumbled upon your weblog and
    wanted to say that I have really enjoyed surfing around your
    weblog posts. After all I will be subscribing in your rss feed and I am hoping you write once more soon!

  185. I’m not that much of a online reader to be
    honest but your sites really nice, keep it up! I’ll go ahead and bookmark
    your site to come back down the road. Many thanks

  186. If some one wants expert view about blogging after that i suggest him/her to pay
    a visit this weblog, Keep up the good work.

  187. I’ve learn some excellent stuff here. Certainly value bookmarking for revisiting.
    I surprise how a lot effort you place to create this kind of excellent
    informative site.

  188. Just desire to say your article is as amazing. The clarity
    in your post is just cool and i can assume you are an expert on this subject.
    Fine with your permission let me to grab your RSS feed to keep updated with forthcoming post.
    Thanks a million and please keep up the enjoyable work.

  189. Saved as a favorite, I like your web site!

  190. Hey! I could have sworn I’ve been to this blog before but after
    checking through some of the post I realized it’s new to me.
    Anyways, I’m definitely happy I found it and I’ll be book-marking and checking back often!

评论已关闭。