2013-07-15 2 views
-2

Я делаю проект Django, бизнес-справочник. Здесь я использовал ABSUULATE PATHS для визуализации шаблонов, I thnk это может создать проблему в будущем. Пожалуйста, ознакомьтесь с моими кодами и предложите мне, как решить эту проблему, чтобы она не создавала никаких проблем в будущем.Альтернатива для Абсолютного Пути в Django

Пожалуйста, помогите

мой models.py есть ::

from django.db import models 


class Directory(models.Model): 

    Bussiness_name = models.CharField(max_length=300) 
    Description = models.CharField(max_length=900) 
    Number = models.CharField(max_length=100) 
    Web_url = models.CharField(max_length=800) 
    Catogory = models.CharField(max_length=200) 


    def __unicode__(self): 
     return self.Bussiness_name 

class Adress(models.Model): 
    directory = models.ForeignKey(Directory) 
    adress_name = models.CharField(max_length=300) 
    def __unicode__(self): 
     return self.adress_name 

class Photos(models.Model): 
    directory = models.ForeignKey(Directory) 
    Photo_path = models.CharField(max_length=100) 
    Photo_name = models.CharField(max_length=100) 
    def __unicode__(self): 
     return self.Photo_name 

Мой view.py находится ::

# Create your views here. 
from django.http import HttpResponse 
from crawlerapp.models import Directory 
from crawlerapp.models import Adress 
from crawlerapp.models import Photos 
from django.template import Context, loader 
from django.shortcuts import render 

def index(request): 
    Directory_list = Directory.objects.all() 
    t=loader.get_template('C:/Python27/django/crawler/templates/crawlertemplates/index.html') 
    c = Context({'Directory_list': Directory_list,}) 
    return HttpResponse(t.render(c)) 

def contactus(request): 
    Directory_list = Directory.objects.all() 
    t=loader.get_template('C:/Python27/django/crawler/templates/crawlertemplates/contactus.html') 
    c = Context({'Directory_list': Directory_list,}) 
    return HttpResponse(t.render(c)) 

def search(request): 
    if 'what' in request.GET and request.GET['what']: 
     what = request.GET['what'] 
     crawlerapp = Directory.objects.filter(Catogory__icontains=what) 
     return render(request, 'C:/Python27/django/crawler/templates/crawlertemplates/search.html', 
        {'crawlerapp': crawlerapp, 'query': what}) 

    elif 'who' in request.GET and request.GET['who']: 
     who = request.GET['who'] 
     crawlerapp = Directory.objects.filter(Bussiness_name__icontains=who) 
     return render(request, 'C:/Python27/django/crawler/templates/crawlertemplates/search.html', 
        {'crawlerapp': crawlerapp, 'query': who}) 

    else: 
     message = 'You submitted an empty form.' 
    return HttpResponse(message) 

И мой urls.py есть ::

from django.conf.urls import patterns, include, url 
# Uncomment the next two lines to enable the admin: 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    # Examples: 
    # url(r'^$', 'crawler.views.home', name='home'), 
    # url(r'^crawler/', include('crawler.foo.urls')), 

    # Uncomment the admin/doc line below to enable admin documentation: 
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 

    # Uncomment the next line to enable the admin: 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^crawlerapp/$', 'crawlerapp.views.index'), 
    url(r'^crawlerapp/contactus/$', 'crawlerapp.views.contactus'), 
    url(r'^crawlerapp/search/$', 'crawlerapp.views.search'), 
) 

У меня есть 3 html-страницы INDEX, CONTACTUS и ПОИСК. Пожалуйста, предложите альтернативу Абсолютного пути, чтобы он не создавал ошибок, если кто-то еще клонирует его из GITHUB и попытается запустить его.

Пожалуйста, помогите решить эту проблему.

ответ

0

С этим вы собираетесь быть в обязательстве в будущем перепроверить все ваши файлы, чтобы изменить путь в том случае, если вы измените каталоги так: в вас settings.py файл определения:

import os.path 

TEMPLATE_DIRS = (
os.path.join(os.path.dirname(__file__),'templates').replace('\\','/'), 
'/path/to/my/project/' 
'/path/to/my/project/template/', # for the apps 
) 

Где templates/ является каталог для ваших шаблонов.

2

Вы должны указать, что вы каталоги шаблонов в файлах settings.py, в списке TEMPLATE_DIRS.

Независимо от того, выполняете ли вы это или нет, вы должны динамически генерировать абсолютный путь с помощью функции модуля os.path.

os.path.abspath(__file__) 

возвращает абсолютный путь к файлу он называется в.

os.path.dirname('some/path') 

возвращает путь к последнему каталогу в 'some/Path'

Комбинируя их, вы можете получить абсолютные тракты, которые будут остаются точными в различных системах, например

os.path.abspath(os.path.dirname(os.path.dirname(__file__))) 

wi ll возвращает абсолютный путь к каталогу на один уровень выше того, который содержит текущий файл.

Прочитайте docs для модуля os.path. Возможно, вам также понадобится использовать os.path.join.

2

В настройках вашего проекта.пй файл:

Добавьте это в верхнем

import os.path 
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) 

Затем установить путь шаблона сделать это:

TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, "templates"), 
) 
Смежные вопросы