2013-07-30 4 views
2

Я использую ниже код, чтобы добавить мета ключевые слова -Как добавить мета ключевые слова с Джанго

в view.py

@template_render("mysite/category.html") 
def category(request, slug): 
    slug = slug.lower() 
    product_type = local_settings.CATEGORY_NAME_TO_ID.get(slug, False) 
    if not product_type: 
     raise Http404 
    products = models.Product.objects.active().filter(product_type = product_type).all() 
    return { 'products' : products, 'slug' : slug, 'key':'wholesale ipad, ipad with retina display, ipad mini, ipad 3, ipad 2',} 

И в файле шаблона -

{% extends "base.html"%} 
{%load appletrade_tags%} 
{% block key %}siteTrade - {{key}}{% endblock %} 
{%block title%}site Trade - {{slug}}{%endblock%} 

Но это не отражающий. Я проверил в источнике поиска нет ключевого слова.

Но да, название отражает.

Не могли бы вы помочь мне узнать, где я ошибаюсь?

EDIT:

base.html

{% extends "base.html"%} 
{% block key %}{%if page.key%}{{page.key}}{%else%}{{block.super}}{%endif%}{% endblock %} 
{% block desc %}{%if page.desc%}{{page.desc}}{%else%}{{block.super}}{%endif%}{% endblock %} 
{%block title%}{%if page.title%}{{page.title}}{%else%}{{block.super}}{%endif%}{%endblock%} 
{%block content%} 
{%endblock%} 

ответ

2

Вы должны использовать либо визуализации или render_to_response передать контекст шаблона. Является ли объект slug на странице?

from django.shortcuts import render_to_response 

def category(request, slug): 
    slug = slug.lower() 
    product_type = local_settings.CATEGORY_NAME_TO_ID.get(slug, False) 
    if not product_type: 
     raise Http404 
    products = models.Product.objects.active().filter(product_type = product_type) 
    context = { 
     'slug': slug, 
     'products': products, 
     'key': 'wholesale ipad, ipad with retina display, ipad mini, ipad 3, ipad 2', 
    } 
    return render_to_response('appletrade/category.html', context, context_instance=RequestContext(request)) 
+0

Спасибо. Я новичок в python. Можете ли вы указать, где мне нужно внести изменения в код? –

+0

@HelloPython Я сделал для вас пример. Это сработает. –

+0

Пробовал, но он дает ошибку «View appletrade.views.category не возвратил объект HttpResponse». –

1

Вот способ автоматизировать ключевые слова для вашего сайта Джанго. Мне все равно не нравится вводить вещи вручную.

Здесь вы можете прочитать ваш файл шаблона и подсчитать первичные слова и вернуть список слов, используемых на странице.

# meta_gen.py 
# create meta keywords for webpage automagically 
# MIT License 
# Author: Daniel P. Clark [email protected] 
import collections, string, StringIO, re 
from django.utils.html import strip_tags 

# Counts words in template files and insert keywords into page 
word_count_min = 2 
word_length_min = 4 

nogo_list = [] # Optional list of words you may not want as meta tags. 

# meta_keywords (html string) => 
# returns non html keyword list, as a comma seperated string, 
# for words fitting qualifications as chosen above. 
def meta_keywords(str_file): 
    c = collections.Counter() 
    strIO_Obj = StringIO.StringIO(str_file) 
    for line in strIO_Obj.readlines(): 
     c.update(re.findall(r"[\w']+", strip_tags(line).lower())) 
    wordlist = [] 
    for word, count in c.most_common(): 
     if len(word) > (word_length_min-1) and count > (word_count_min-1) and word not in nogo_list: wordlist.append(word) 
    return string.join(wordlist, ',') 

Место meta_gen.py в вашей основной папке проекта. Затем добавьте эти фрагменты в каждый из ваших файлов views.py.

# views.py 
from django.shortcuts import render_to_response 
from django.template.loader import render_to_string 
from project.meta_gen import meta_keywords 

this_template = "apptemplate.html" 

def tabs(request): 
    return render_to_response(this_template, { 'title' : "Page Name", 'keys' : meta_keywords(render_to_string(this_template)) }) 

И, наконец, в основном шаблоне base.html вы помещаете метатег для ключевых слов.

# base.html 
<head> 
<title>Site Name - {{ title }}</title> 
<meta name="keywords" content="{{ keys }}" /> 
</head> 

И все. Все страницы, которые наследуют базовый шаблон и имеют код views.py, будут вставлять метатеги ключевых слов со словами, которые повторяются на ваших страницах.

Я понимаю, что это можно улучшить и оптимизировать. Скорость меня не беспокоит. Поэтому вход приветствуется.

+1

Действительно потрясающе, я искал динамический способ генерации своих ключевых слов, и эта идея кажется совершенно совершенной, я буду использовать ее также для генерации ключевых слов из моих моделей! – AlvaroAV

Смежные вопросы