Vous avez pu remarquer au cours des derniers tutoriaux que nous avons utilisé différentes façons de retourner de la donnée depuis notre contrôleur vers nos vues.
Par exemple dans le tutoriel sur les formulaires, nous avons utilisé le raccourci 'render_to_response' dans le contrôleur 'views.py' mais nous aurions pu utiliser d'autres raccourcis.
Rappelons d'abord comment un contrôleur le plus simple qu'il soit peut s'écrire :
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world.")
Nous faisons appel à la méthode HttpResponse du module http pour ensuite retourner une chaîne de caractère. Et nous ne faisons pas appel à un template !
Django n'est en effet pas un FrameWork MVC (Modèle/Vue/Contrôleur) comme les autres. Puisque vous aurez remarquez que le "contrôleur" est nommé "views" et que les "vues" sont nommées "templates". En réalité, c'est moi-même qui ai choisi de faire ces propres associations afin de faciliter la compréhension du framework. Pour ceux qui veulent en savoir plus sur le type de framework qu'est réellement Django, je vous conseille cette lecture de la documentation officielle : Django appears to be a MVC framework
Cependant ne vous inquiétez pas, la logique que nous avons suivi jusqu'à présent a été celle d'un framework MVC classique mais vous savez à présent que Django est plus que cela ;) un "MTV" : "model", "template", et "view."
Je parlerai dès à présent uniquement de "view" et de "template" et non plus de "contrôleur" et "vue" pour éviter toute confusion possible.
Si nous voulons utiliser un template couplé à notre view, nous pouvons écrire :
from django.template import Context, loader
from users.models import User
from django.http import HttpResponse
def index(request):
users_list = User.objects.all()
t = loader.get_template('users/index.html')
c = Context({
'users_list': users_list,
})
return HttpResponse(t.render(c))
On importe les modules Context et loader ainsi qu'un modèle que nous avons déjà défini, ici User.
La fonction 'index' de notre view va récupérer une liste d'objets 'User' pour ensuite les passer au template 'index.html' contenu dans le dossier 'users'.
Cependant ceci est assez verbeux, et heureusement pour nous des raccourcis django existent tels que render_to_response, le code précédent peut alors s'écrire de cette façon :
from django.shortcuts import render_to_response
from users.models import User
def index(request):
users_list = User.objects.all()
return render_to_response('users/index.html', {'users_list': users_list})
Plus agréable n'est-ce pas ? ;)
Notez que le second argument "le contexte" représenté par un dictionnaire est optionnel. De plus render_to_response peut prendre deux autres arguments optionnels : 'context_instance' et 'mimetype'. Le code précédent aurait pu être écrit de cette façon :
from django.shortcuts import render_to_response
from django.template import RequestContext
from users.models import User
def index(request):
users_list = User.objects.all()
return render_to_response('users/index.html', {'users_list': users_list}, context_instance=RequestContext(request), mimetype="application/xhtml+xml")
Rappelez-vous d'ailleurs qu'il est très important de spécifier le 'context_instance' pour une view retournant un formulaire utilisant la protection 'csrf_token' sans quoi une erreur serait affichée. En effet, le contexte de la requête n'est pas retourné par défaut avec render_to_response, et notre template a besoin de certaines informations du contexte pour fonctionner dans ce cas précis.
Pour plus d'informations sur render_to_response, reportez-vous à la documentation officielle : render_to_response
Pour être sûr d'utiliser un context_instance qui utilise RequestContext, le raccourci 'render' existe et possède en plus deux arguments optionnels : 'status' et 'current_app'. On peut alors écrire :
from django.shortcuts import render
from users.models import User
def my_view(request):
users_list = User.objects.all()
return render(request, 'users/index.html', {'users_list': users_list},
content_type="application/xhtml+xml")
Ce qui au final sera équivalent à :
from django.http import HttpResponse
from django.template import RequestContext, loader
from users.models import User
def my_view(request):
users_list = User.objects.all()
t = loader.get_template('users/index.html')
c = RequestContext(request, {'users_list': users_list})
return HttpResponse(t.render(c),
content_type="application/xhtml+xml")
Le passage de données et de contexte doit maintenant être bien plus clair pour vous ;)
Pour plus d'informations sur render, reportez-vous à la documentation officielle : render
Un autre raccourci bien pratique est 'redirect' qui permet de rediriger vers une autre URL. Il peut prendre en principal argument trois types différents :
- Un modèle : La fonction get_absolute_url() du modèle sera appelée.
- Le nom d'une vue, avec la possibilité de lui passer des arguments: urlresolvers.reverse() sera utilisé pour résoudre-inversement le nom.
- Une URL, qui sera utilisée pour la redirection.
Ainsi que la possibilité de passer un second argument optionnel 'permanent' qui par défaut est à False, ce qui définira si la redirection doit être considérée comme permanente ou temporaire.
Pour plus d'informations sur redirect et des cas d'utilisations, reportez-vous à la documentation officielle : redirect
get_object_or_404 et get_list_or_404 sont deux raccourcis très intéressants qui vont permettre de gérer la propagation d'une erreur de type 404 dans le cas où un objet demandé ou une liste d'objets demandée ne sont pas trouvés. Exemple :
from django.shortcuts import get_object_or_404
def my_view(request):
my_object = get_object_or_404(MyModel, pk=1)
serait équivalent à :
from django.http import Http404
def my_view(request):
try:
my_object = MyModel.objects.get(pk=1)
except MyModel.DoesNotExist:
raise Http404
de même que :
from django.shortcuts import get_list_or_404
def my_view(request):
my_objects = get_list_or_404(MyModel, published=True)
serait équivalent à :
from django.http import Http404
def my_view(request):
my_objects = list(MyModel.objects.filter(published=True))
if not my_objects:
raise Http404
Voilà ! Grâce aux raccourcis que nous venons de voir, vous pouvez à présent faciliter l'écriture de votre code et le maintenir plus facilement !
Il peut également être intéressant de jeter un coup d'œil à HttpResponse sur la documentation officielle où une pléthore d'informations est disponible pour correctement gérer les fonctions de votre view : HttpResponse

<a href=" http://kamarovo.webs.com/#wheretobuykamagra ">kamagra where to buy</a> in point of fact has altogether a some applications as a service to the <a href=" http://www.freewebs.com/kamandir/#kamagraprescription ">buy kamagra online</a> steroid using athlete. First <a href=" http://www.webjam.com/karapuz/#kamagraonline ">kamagra viagra</a> and primary, its most unexceptional use <a href=" http://komogra.webs.com/#kamagra ">order kamagra</a> is against the avoiding of gynocomastia. <a href=" http://flavors.me/kamandas/#buykamagraonline ">kamagra review</a> does this alongside literally competing throughout the <a href=" http://kamahra.webs.com/#kamagrareview ">online kamagra</a> receptor site in bust series, and binding to it. http://flavors.me/kamandas/#id1775 kamagra next day
<a href=" http://kamarovo.webs.com/#kamagracheapest ">kamagra on line</a> in reality has quite a few applications to save the <a href=" http://www.freewebs.com/kamandir/#onlinekamagra ">buy kamagra online</a> steroid using athlete. Primary <a href=" http://www.webjam.com/karapuz/#kamagraprescription ">kamagra 100mg jelly</a> and primarily, its most unexceptional detest <a href=" http://komogra.webs.com/#kamagra100mgjelly ">buy kamagra online</a> is destined for the preventing of gynocomastia. <a href=" http://flavors.me/kamandas/#kamagrajelly ">kamagra prescription</a> does this by means of in reality competing looking for the <a href=" http://kamahra.webs.com/#buykamagraonline ">kamagra no prescription</a> receptor situation in titty accumulation, and binding to it. http://www.freewebs.com/kamandir/#id727 kamagra oral
<a href=http://www.wildoats.com/go/jp/prada.html>プラダ</a>の特徴です.持つほどに、知るほどに、誰もがになってしまう、素晴らしい魅力にあふれるブランドです。 Pioligoarrore <a href=http://www.wildoats.com/go/jp/miumiu.html><a href=http://www.wildoats.com/go/jp/miumiu.html</a> いつも<a href=http://www.wildoats.com/go/jp/miumiu.html>ミュウミュウ 財布</a>専門店「リアルスタイル」にご来店くださり、ありがとうございます! Pioligoarrore <a href=http://www.wildoats.com/go/jp/prada.html>プラダ バッグ</a>
<a href=" http://kamarovo.webs.com/#purchasekamagra ">kamagra ajanta</a> actually has quite a two applications as the <a href=" http://www.freewebs.com/kamandir/#kamagrasoft ">kamagra</a> steroid using athlete. Primary <a href=" http://www.webjam.com/karapuz/#kamagrauk ">kamagra without prescription</a> and primary, its most normal detest <a href=" http://komogra.webs.com/#kamagra ">kamagra cheap online</a> is for the avoiding of gynocomastia. <a href=" http://flavors.me/kamandas/#kamagra ">buy kamagra online</a> does this about in point of fact competing looking for the <a href=" http://kamahra.webs.com/#kamagrabuyonline ">cheapest kamagra</a> receptor install in heart concatenation, and binding to it. http://flavors.me/kamandas/#id922 buy kamagra online
According to <a href=" http://priiigy.webs.com/#dapoxetine-side-effects ">where to buy priligy online</a> report that has been published in the <a href=" http://flavors.me/preligy/#buy-dapoxetine-online ">buy dapoxetine online</a> of Urology, this <a href=" http://www.webjam.com/dapoxatine">buy dapoxetine online</a> helps men not solely to cope <a href=" http://www.freewebs.com/priliky/#buy-priligy ">purchase dapoxetine</a> with their hornet's nest, <a href=" http://priligi.lo.gs/#priligy-generic ">priligy</a> but also to sometimes non-standard aggravate rid of interpersonal <a href=" http://prilegy.webs.com ">priligy</a> difficulty.
http://www.webjam.com/dapoxatine/#id504 priligy
neancespavy <a href=http://robotel.com/news/fashion.php?p=7397>http://robotel.com/news/fashion.php?p=7397</a> <br>alloryfrocurn <a href=http://robotel.com/news/fashion.php?p=7397>http://www.sysea.com/images/index.php?louis-vuitton-damier-canvas-geronimoslouis-vuittoncheap-discount.html
</a> peesecopsoanT
According to <a href=" http://priiigy.webs.com/#dapoxetine ">priligy</a> report that has been published in the <a href=" http://flavors.me/preligy/#priligy-en-usa ">priligy uk</a> of Urology, this <a href=" http://www.webjam.com/dapoxatine">purchase priligy online</a> helps men not at most to dispose of <a href=" http://www.freewebs.com/priliky/#priligy ">dapoxetine</a> with their problem, <a href=" http://priligi.lo.gs/#priligy-and-viagra ">priligy</a> but also to get rid of interpersonal <a href=" http://prilegy.webs.com ">dapoxetine in india</a> difficulty.
http://priligi.lo.gs/#id1738 dapoxetine
According to <a href=" http://priiigy.webs.com/#purchase-dapoxetine ">purchase priligy online</a> report that has been published in the <a href=" http://flavors.me/preligy/#priligy-with-viagra ">dapoxetine price</a> of Urology, this <a href=" http://www.webjam.com/dapoxatine">priligy y viagra</a> helps men not solely to dispose of <a href=" http://www.freewebs.com/priliky/#priligy ">dapoxetine online</a> with their pretty pickle, <a href=" http://priligi.lo.gs/#priligy-no-prescription ">priligy review</a> but also to get rid of interpersonal <a href=" http://prilegy.webs.com ">order priligy</a> difficulty.
http://prilegy.webs.com/#id683 priligy viagra
こちらは、人気ブランドの シャネル <a href=http://www.4what.com/reviews/jp/chanel.html>http://www.4what.com/reviews/jp/chanel.html</a>の商品を紹介しています。 Pioligoarrore <a href=http://www.4what.com/reviews/jp/chanel.html>ココシャネル</a> 上品なエルメス 財布日本最安値に挑戦!<a href=http://www.4what.com/reviews/jp/hermes.html>エルメス 店舗</a>、エルメス バッグなど人気モデルや 新作を続々入荷! Pioligoarrore <a href=http://www.4what.com/reviews/jp/chanel.html>シャネル 財布</a>
ショップ速い船積みを持つ偉大な価格で<a href=http://www.wildoats.com/go/jp/prada.html>プラダ バッグ 新作</a>、バッグ、長財布、あなたは 卸売価格でたくさんのお金を節約します。 Pioligoarrore <a href=http://www.wildoats.com/go/jp/prada.html>プラダ バッグ 新作</a> 全国のネット通販ショップから、<a href=http://www.wildoats.com/go/jp/miumiu.html>miumiu</a>の商品を簡単に探せます。 Pioligoarrore <a href=http://www.wildoats.com/go/jp/prada.html>プラダ 財布 メンズ</a>
<a href=" http://www.freewebs.com/azikmutit/#azithromycin250mg ">azithromycin antibiotics</a> fights infections not later than <a href=" http://azithromacin.webs.com/#orderazithromycin ">azithromycin side effects</a> punishing bacteria and preventing their growth before <a href=" http://azithronycin.webs.com/#azithromycinpurchaseonline ">buying azithromycin</a> preventing bacteria from <a href=" http://www.webjam.com/azithromycininfo/#azithromycincost ">azithromycin to buy</a> creating vital proteins. The <a href=" http://azitromycin.lo.gs/#azithromycin250 ">azithromycin online</a> can’t raise or replicate without <a href=" http://flavors.me/azithir/#azithromycin250mg ">zithromax azithromycin</a> these proteins.
http://azithromacin.webs.com/#1533 price for azithromycin
<a href=" http://www.freewebs.com/azikmutit/#purchaseazithromycinonline ">azithromycin for chlamydia</a> fights infections before <a href=" http://azithromacin.webs.com/#azithromycintobuy ">azithromycin pack</a> punishing bacteria and preventing their vegetation through <a href=" http://azithronycin.webs.com/#azithromycinonline ">buy azithromycin online</a> preventing bacteria from <a href=" http://www.webjam.com/azithromycininfo/#azithromycinwithoutprescription ">azithromycin oral</a> creating imperative proteins. The <a href=" http://azitromycin.lo.gs/#azithromycinsideeffect ">500mg azithromycin</a> can’t raise or replicate without <a href=" http://flavors.me/azithir/#azithromycinsideeffect ">azithromycin 500mg</a> these proteins.
http://www.webjam.com/azithromycininfo/#800 side effects azithromycin
<a href=" http://www.freewebs.com/azikmutit/#priceofazithromycin ">azithromycin 250 mg</a> fights infections aside <a href=" http://azithromacin.webs.com/#azithromycinantibiotic ">zithromax azithromycin</a> punishing bacteria and preventing their flowering near <a href=" http://azithronycin.webs.com/#azithromycinpurchaseonline ">azithromycin buy online</a> preventing bacteria from <a href=" http://www.webjam.com/azithromycininfo/#azithromycinpurchaseonline ">azithromycin dose</a> creating vital proteins. The <a href=" http://azitromycin.lo.gs/#250mgazithromycin ">azithromycin 500mg</a> can’t begin to be liked by or replicate without <a href=" http://flavors.me/azithir/#azithromycindose ">cost of azithromycin</a> these proteins.
http://www.webjam.com/azithromycininfo/#1200 azithromycin 500mg
Kennedy was not someone to look up to, much less deify. <a href=http://www.karenmillenonlineoutlet.com>karen millen dresses uk</a> What we really wanted was to win this game," said Messi.On the casual cruelty of men, on the seething and calculated bitterness of a wife. <a href=http://www.bestkarenmillen4u.com>karen millen online</a> "Our range is more of a library with bizarre movies for a whole underground of people who collect movies.The pair are attempting to jump a motorcycle and a snowmobile in tandem over a 300foot gap in the San Diego Bay. <a href=http://www.findbestmulberryuk.co.uk>mulberry sale</a> The top 1 percent of earners received 21 percent of the nation total income in 2008, up from 9 percent in 1976, after having accounted for a whopping fourfifths of all income gains be tween 1980 and 2005." "It got to the point where I felt like we were stuck, you know? <a href=http://www.bestkarenmillen4u.com>karen millen online</a> I see <them> with my friends. <a href=http://saclongchampsales.webnode.fr>saclongchampsales.webnode.fr</a> "Never had a better time, but then it cost me $25,000," said one local who attended .<a href=http://www.mulberryoutletukhome.com>mulberry outlet uk</a> Jan.The Patriots recently hosted TCU defensive end Jerry Hughes, one player who fits the hybrid mold well.
anasialia <a href=http://www.sjshc.cn/images/.1.asp?louis-vuitton-canada-outletlouis-vuittonreview.html>http://www.sjshc.cn/images/.1.asp?louis-vuitton-canada-outletlouis-vuittonreview.html</a> Awaracisealse <a href=http://www.sjshc.cn/images/.1.asp?louis-vuitton-canada-outletlouis-vuittonreview.html>http://www.smartimage.com.cn/images/index.php?louis-vuitton-brochure-louis-vuitton-eshop.html
</a> attepthaize
<a href="http://www.hellahotline.com"> xanax</a>[url=http://www.hellahotline.com]xanax[/url]http://www.hellahotline.com
<a href="http://www.leduniversity.org"> xanax</a>[url=http://www.leduniversity.org]xanax[/url]http://www.leduniversity.org
<a href="http://www.tdgstaff.com"> valium</a>[url=http://www.tdgstaff.com]valium[/url]http://www.tdgstaff.com
<a href="http://www.libanlink.org"> ambien</a>[url=http://www.libanlink.org]ambien[/url]http://www.libanlink.org
<a href="http://www.sensenews.com"> ambien</a>[url=http://www.sensenews.com]ambien[/url]http://www.sensenews.com
ryvuoc
lokincBrainia <a href=http://zykjad.com/images/index.asp?louis-vuitton-designer-jeanslouis-vuittonreal.html>http://zykjad.com/images/index.asp?louis-vuitton-designer-jeanslouis-vuittonreal.html</a> <br>Insomesow <a href=http://zykjad.com/images/index.asp?louis-vuitton-designer-jeanslouis-vuittonreal.html>http://muxibox.com/images/index.php?louis-vuitton-canvas-tote-bluelouis-vuittonbuy.html
</a> RenArrodenand
smtopkob
poirwermono <a href=http://www.dyjjkfq.cn/images/js/online.php?louis-vuitton-cannes-epilouis-vuittonoutlet-locations.html>http://www.dyjjkfq.cn/images/js/online.php?louis-vuitton-cannes-epilouis-vuittonoutlet-locations.html</a> <br>atmordavyeror <a href=http://www.dyjjkfq.cn/images/js/online.php?louis-vuitton-cannes-epilouis-vuittonoutlet-locations.html>http://nanjiebc.com/images/index.php?louis-vuitton-cherry-cerises-speedy-25-handbag-louis-vuitton-for-sale-cheap.html
</a> Afferbtrine
<a href=" http://www.freewebs.com/zithromaxe/#price-zithromax ">zithromax buy online</a> fights infections by <a href=" http://zithrobax.webs.com/#cheap-zithromax ">cost of zithromax</a> blood bath bacteria and preventing their growth past <a href=" http://www.webjam.com/zithromix/#zithromax-buying ">zithromax order</a> preventing bacteria from <a href=" http://flavors.me/zethromax/#how-to-buy-zithromax ">order zithromax online</a> creating essential proteins. The <a href=" http://zithomax.lo.gs/#price-of-zithromax ">zithromax purchase</a> can’t enlarge or replicate without <a href=" http://zithramax.webs.com/#zithromax-pack ">buying zithromax online</a> these proteins.
http://zithrobax.webs.com/#id1631 zithromax buying
<a href=" http://www.freewebs.com/zithromaxe/#zithromax-without-prescription ">zithromax to buy</a> fights infections by <a href=" http://zithrobax.webs.com/#zithromax-250mg ">zithromax</a> fatiguing bacteria and preventing their proliferation by <a href=" http://www.webjam.com/zithromix/#zithromax-online-purchase ">zithromax chlamydia</a> preventing bacteria from <a href=" http://flavors.me/zethromax/#zithromax-pack ">purchase zithromax</a> creating indispensable proteins. The <a href=" http://zithomax.lo.gs/#where-can-i-buy-zithromax-online ">how to buy zithromax</a> can’t bear or replicate without <a href=" http://zithramax.webs.com/#price-zithromax ">zithromax without prescription</a> these proteins.
[url=http://zithramax.webs.com/#id1800]zithromax purchase[/url]
<a href=" http://flagylbacteria.webs.com/#flagyl ">metronidazole 500</a> fights infections by <a href=" http://flagylz.webs.com/#flagyl-antibiotic ">metronidazole to buy</a> carnage bacteria and preventing their spread close <a href=" http://www.webjam.com/flagyll/#metronidazole-price ">metronidazole flagyl</a> preventing bacteria from <a href=" http://flagylabros.lo.gs/#flagyl-order ">flagyl without prescription</a> creating primary proteins. The <a href=" http://flavors.me/flagylforum/#antibiotics-flagyl ">metronidazole amoxicillin</a> can’t grow or replicate without <a href=" http://www.freewebs.com/metronidazolefaq/#metronidazole-250 ">metronidazole antibiotic</a> these proteins.
http://flagylbacteria.webs.com/#id1297 flagyl metronidazole
<a href=" http://flagylbacteria.webs.com/#buy-metronidazole ">metronidazole 500</a> fights infections via <a href=" http://flagylz.webs.com/#buy-flagyl ">flagyl</a> gain bacteria and preventing their evolution close to <a href=" http://www.webjam.com/flagyll/#flagyl-400 ">500 mg metronidazole</a> preventing bacteria from <a href=" http://flagylabros.lo.gs/#flagyl-400 ">amoxicillin and metronidazole</a> creating principal proteins. The <a href=" http://flavors.me/flagylforum/#metronidazole-antibiotic ">flagyl 400</a> can’t expand or replicate without <a href=" http://www.freewebs.com/metronidazolefaq/#flagyl-without-prescription ">buy metronidazole</a> these proteins.
http://flagylbacteria.webs.com/#id520 flagyl side effect
<a href=" http://www.freewebs.com/zithromaxe/#buy-zithromax-without-prescription ">azithromycin zithromax</a> fights infections by <a href=" http://zithrobax.webs.com/#zithromax-price ">zithromax online purchase</a> fatiguing bacteria and preventing their broadening past <a href=" http://www.webjam.com/zithromix/#where-to-buy-zithromax ">zithromax 500mg</a> preventing bacteria from <a href=" http://flavors.me/zethromax/#buying-zithromax-online ">buy zithromax online</a> creating imperative proteins. The <a href=" http://zithomax.lo.gs/#zithromax-no-prescription ">zithromax</a> can’t enlarge or replicate without <a href=" http://zithramax.webs.com/#purchase-zithromax ">dosage for zithromax</a> these proteins.
http://zithramax.webs.com/#id1498 purchase zithromax
<a href=" http://flagylbacteria.webs.com/#flagyl-250-mg ">flagyl cipro</a> fights infections by <a href=" http://flagylz.webs.com/#flagyl-online ">order flagyl</a> killing bacteria and preventing their nurturing by <a href=" http://www.webjam.com/flagyll/#metronidazole-side-affects ">buy metronidazole</a> preventing bacteria from <a href=" http://flagylabros.lo.gs/#metronidazole ">flagyl</a> creating essential proteins. The <a href=" http://flavors.me/flagylforum/#metronidazole-flagyl ">500mg metronidazole</a> can’t luxuriate or replicate without <a href=" http://www.freewebs.com/metronidazolefaq/#buy-flagyl ">price of metronidazole</a> these proteins.
http://www.webjam.com/flagyll/#id622 metronidazole
<a href="http://patkaplan.com">cialis</a> <a href="http://naturfish.com">cialis</a> <a href="http://patkaplan.com">cialis</a> <a href="http://superstock1.com">buy cialis on line</a> <a href="http://superstock1.com">cialis online sale</a>
<a href=http://channeltheory.com/mall/burberry/>バーバリーブラックレーベル</a>の定番から日本未入荷、入手困難なアイテムを世界のバイヤーからいち早 Pioligoarrore <a href=http://channeltheory.com/mall/coach/>coach メンズ</a> バーバリーストアで高品賉シャネルを提供致します!違い色ご自由に,早くお気に入り<a href=http://channeltheory.com/mall/burberry/>バーバリー アウトレット</a>! Pioligoarrore <a href=http://channeltheory.com/mall/burberry/><a href=http://channeltheory.com/mall/burberry/</a>
Aloha! orn
Aloha! ure
Aloha! cub
Aloha! gbi
Aloha! gvd
Aloha! tup
Aloha! urd
It is appropriate time to make some plans for the future and it's time to be happy. I've read this post and if I could I wish to suggest you few interesting things or tips. Maybe you could write next articles referring to this article. I wish to read even more things about it!
so you like follow:
<a href=http://dubaibusinessconsultant.com/louisvuittonoutletonline.asp>louis vuitton outlet store</a>
<a href=http://dubaibusinessconsultant.com/louisvuittonoutletonline.asp>louis vuitton outlet online</a>
<a href=http://dubaibusinessconsultant.com/louisvuittonoutletonline.asp>louis vuitton handbags outlet</a>
neancespavy <a href=http://robotel.com/news/fashion.php?p=7397>http://robotel.com/news/fashion.php?p=7397</a> <br>alloryfrocurn <a href=http://robotel.com/news/fashion.php?p=7397>http://www.87wan.com/upload/index.php?louis-vuitton-damier-graphite-zippy-organizer-louis-vuitton-cheap-prices.html
</a> peesecopsoanT
We have a research strategy to develop a mass spectrometry-based method for mapping the similarities between cancers as well as cancer-specific markers.