[CPyUG] 一直困扰我的问题,Django相关,没人回答都掉下去了,只能再发,谢谢各位了~``

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

[CPyUG] 一直困扰我的问题,Django相关,没人回答都掉下去了,只能再发,谢谢各位了~``

Kidwind
Django里有个管理器类CurrentSiteManager来筛选当前站点的数据,好像是通过settings.SITE_ID来过滤的,我现在
想自定义一个管理类也是用来筛选当前站点的数据的,不过我不想通过settings.SIET_ID来过滤,而是通过域名来过滤,如:
www.domain.com 中文站点
eng.domain.com 英文站点

现在的问题是管理器类里没有传入request对象,没法获得当前访问的域名,不知道怎么处理了,请各位大哥赐教了,小弟不胜感激~``
Django刚学不久,很多东西不清楚~~`:(

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

Subscription settings: http://groups.google.com/group/python-cn/subscribe?hl=zh-CN
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 一直困扰我的问题,Django相关,没人回答都掉下去了,只能再发,谢谢各位了~``

book4e
你描述的不是很清楚,姑且按照我的理解来解释下,不一定对。

如果需要在 view 层来根据域名过滤数据,文档中给了例子:

from django.contrib.sites.models import Site

def my_view(request):
   current_site = Site.objects.get_current()
   if current_site.domain == 'foo.com':
       # Do something
   else:
       # Do something else.

而你提到的 CurrentSiteManager 一般是在 model 定义中自定义 model 管理器用的,它会自动过滤查询仅包含与当前站点有关的对象。文档中的例子:

from django.db import models
from django.contrib.sites.models import Site
from django.contrib.sites.managers import CurrentSiteManager

class Photo(models.Model):
   photo = models.FileField(upload_to='/home/photos')
   photographer_name = models.CharField(max_length=100)
   pub_date = models.DateField()
   site = models.ForeignKey(Site)
   objects = models.Manager()
   on_site = CurrentSiteManager()

如果调用 Photo.objects.all() 将返回数据库中所有 Photo 对象,但 Photo.on_site.all() 仅返回所有与当前站点有关的对象,根据 SITE_ID 的设置。

sites 文档:http://docs.djangoproject.com/en/dev/ref/contrib/sites/

希望对你有用。

2010/4/26 Kidwind <[hidden email]>:
> Django里有个管理器类CurrentSiteManager来筛选当前站点的数据,好像是通过settings.SITE_ID来过滤的,我现在
> 想自定义一个管理类也是用来筛选当前站点的数据的,不过我不想通过settings.SIET_ID来过滤,而是通过域名来过滤,如:
> www.domain.com 中文站点
> eng.domain.com 英文站点
>
> 现在的问题是管理器类里没有传入request对象,没法获得当前访问的域名,不知道怎么处理了,请各位大哥赐教了,小弟不胜感激~``
> Django刚学不久,很多东西不清楚~~`:(
>
> --
> 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
> 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
> 详情: https://groups.google.com/group/python-cn
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
>
> Subscription settings: http://groups.google.com/group/python-cn/subscribe?hl=zh-CN
>

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 一直困扰我的问题,Django相关,没人回答都掉下去了,只能再发,谢谢各位了~``

Kidwind
兄弟没有弄明白我的意思,Photo.on_site.all()是仅返回所有与当前站点有关的对象,但他用来区分站点是以
settings.SITE_ID来进行区分的,因为我两个域名指向了同一程序:
www.domain.com    中文站点
eng.domain.com    英文站点
我想让程序通过域名来自动判断当前用户访问的站点是中文站点还是英文站点,而不是默认配置的settings.SITE_ID。



book4e wrote:

> 你描述的不是很清楚,姑且按照我的理解来解释下,不一定对。
>
> 如果需要在 view 层来根据域名过滤数据,文档中给了例子:
>
> from django.contrib.sites.models import Site
>
> def my_view(request):
>    current_site = Site.objects.get_current()
>    if *current_site.domain* == 'foo.com':
>        # Do something
>    else:
>        # Do something else.
>
> 而你提到的 CurrentSiteManager 一般是在 model 定义中自定义 model
> 管理器用的,它会自动过滤查询仅包含与当前站点有关的对象。文档中的例子:
>
> from django.db import models
> from django.contrib.sites.models import Site
> from django.contrib.sites.managers import CurrentSiteManager
>
> class Photo(models.Model):
>    photo = models.FileField(upload_to='/home/photos')
>    photographer_name=models%2ECharField%28max_length%3D100%29
>    pub_date = models.DateField()
>    *site = models.ForeignKey(Site)*
>    *objects = models.Manager()*
>    *on_site = CurrentSiteManager()*
>
> 如果调用 Photo.objects.all() 将返回数据库中所有 Photo 对象,但 Photo.on_site.all()
> 仅返回所有与当前站点有关的对象,根据 SITE_ID 的设置。
>
> sites 文档:http://docs.djangoproject.com/en/dev/ref/contrib/sites/
>
> 希望对你有用。
>
> 2010/4/26 Kidwind <[hidden email]>:
> > Django里有个管理器类CurrentSiteManager来筛选当前站点的数据,好像是通过settings.SITE_ID来过滤的,我现在
> > 想自定义一个管理类也是用来筛选当前站点的数据的,不过我不想通过settings.SIET_ID来过滤,而是通过域名来过滤,如:
> > www.domain.com 中文站点
> > eng.domain.com 英文站点
> >
> > 现在的问题是管理器类里没有传入request对象,没法获得当前访问的域名,不知道怎么处理了,请各位大哥赐教了,小弟不胜感激~``
> > Django刚学不久,很多东西不清楚~~`:(
> >
> > --
> > 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
> > 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
> > 详情: https://groups.google.com/group/python-cn
> > 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> >
> > Subscription settings:
> http://groups.google.com/group/python-cn/subscribe?hl=zh-CN
> >
>
> --
> 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
> 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
> 详情: https://groups.google.com/group/python-cn
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 一直困扰我的问题,Django相关,没人回答都掉下去了,只能再发,谢谢各位了~``

book4e
Site.objects.get_current().domain 不能工作?

2010/4/27 Kidwind <[hidden email]>
兄弟没有弄明白我的意思,Photo.on_site.all()是仅返回所有与当前站点有关的对象,但他用来区分站点是以
settings.SITE_ID来进行区分的,因为我两个域名指向了同一程序:
www.domain.com    中文站点
eng.domain.com    英文站点
我想让程序通过域名来自动判断当前用户访问的站点是中文站点还是英文站点,而不是默认配置的settings.SITE_ID。



book4e wrote:
> 你描述的不是很清楚,姑且按照我的理解来解释下,不一定对。
>
> 如果需要在 view 层来根据域名过滤数据,文档中给了例子:
>
> from django.contrib.sites.models import Site
>
> def my_view(request):
>    current_site = Site.objects.get_current()
>    if *current_site.domain* == 'foo.com':
>        # Do something
>    else:
>        # Do something else.
>
> 而你提到的 CurrentSiteManager 一般是在 model 定义中自定义 model
> 管理器用的,它会自动过滤查询仅包含与当前站点有关的对象。文档中的例子:
>
> from django.db import models
> from django.contrib.sites.models import Site
> from django.contrib.sites.managers import CurrentSiteManager
>
> class Photo(models.Model):
>    photo = models.FileField(upload_to='/home/photos')
>    photographer_name=models%2ECharField%28max_length%3D100%29
>    pub_date = models.DateField()
>    *site = models.ForeignKey(Site)*
>    *objects = models.Manager()*
>    *on_site = CurrentSiteManager()*
>
> 如果调用 Photo.objects.all() 将返回数据库中所有 Photo 对象,但 Photo.on_site.all()
> 仅返回所有与当前站点有关的对象,根据 SITE_ID 的设置。
>
> sites 文档:http://docs.djangoproject.com/en/dev/ref/contrib/sites/
>
> 希望对你有用。
>
> 2010/4/26 Kidwind <[hidden email]>:
> > Django里有个管理器类CurrentSiteManager来筛选当前站点的数据,好像是通过settings.SITE_ID来过滤的,我现在
> > 想自定义一个管理类也是用来筛选当前站点的数据的,不过我不想通过settings.SIET_ID来过滤,而是通过域名来过滤,如:
> > www.domain.com 中文站点
> > eng.domain.com 英文站点
> >
> > 现在的问题是管理器类里没有传入request对象,没法获得当前访问的域名,不知道怎么处理了,请各位大哥赐教了,小弟不胜感激~``
> > Django刚学不久,很多东西不清楚~~`:(
> >
> > --
> > 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
> > 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
> > 详情: https://groups.google.com/group/python-cn
> > 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> >
> > Subscription settings:
> http://groups.google.com/group/python-cn/subscribe?hl=zh-CN
> >
>
> --
> 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
> 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
> 详情: https://groups.google.com/group/python-cn
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 一直困扰我的问题,Django相关,没人回答都掉下去了,只能再发,谢谢各位了~``

jondynet
很显然用settings.SIET_ID 来区分是最简单的办法,同一个项目,再写个settings就可以了,基本不需要再写代码了嘛。

settings_en.py
from settings.import *
SIET_ID = 2

manager.py runserver --settings=settings_en
这样就是英文站点了

2010/4/28 book4e <[hidden email]>
Site.objects.get_current().domain 不能工作?

2010/4/27 Kidwind <[hidden email]>

兄弟没有弄明白我的意思,Photo.on_site.all()是仅返回所有与当前站点有关的对象,但他用来区分站点是以
settings.SITE_ID来进行区分的,因为我两个域名指向了同一程序:
www.domain.com    中文站点
eng.domain.com    英文站点
我想让程序通过域名来自动判断当前用户访问的站点是中文站点还是英文站点,而不是默认配置的settings.SITE_ID。



book4e wrote:
> 你描述的不是很清楚,姑且按照我的理解来解释下,不一定对。
>
> 如果需要在 view 层来根据域名过滤数据,文档中给了例子:
>
> from django.contrib.sites.models import Site
>
> def my_view(request):
>    current_site = Site.objects.get_current()
>    if *current_site.domain* == 'foo.com':
>        # Do something
>    else:
>        # Do something else.
>
> 而你提到的 CurrentSiteManager 一般是在 model 定义中自定义 model
> 管理器用的,它会自动过滤查询仅包含与当前站点有关的对象。文档中的例子:
>
> from django.db import models
> from django.contrib.sites.models import Site
> from django.contrib.sites.managers import CurrentSiteManager
>
> class Photo(models.Model):
>    photo = models.FileField(upload_to='/home/photos')
>    photographer_name=models%2ECharField%28max_length%3D100%29
>    pub_date = models.DateField()
>    *site = models.ForeignKey(Site)*
>    *objects = models.Manager()*
>    *on_site = CurrentSiteManager()*
>
> 如果调用 Photo.objects.all() 将返回数据库中所有 Photo 对象,但 Photo.on_site.all()
> 仅返回所有与当前站点有关的对象,根据 SITE_ID 的设置。
>
> sites 文档:http://docs.djangoproject.com/en/dev/ref/contrib/sites/
>
> 希望对你有用。
>
> 2010/4/26 Kidwind <[hidden email]>:
> > Django里有个管理器类CurrentSiteManager来筛选当前站点的数据,好像是通过settings.SITE_ID来过滤的,我现在
> > 想自定义一个管理类也是用来筛选当前站点的数据的,不过我不想通过settings.SIET_ID来过滤,而是通过域名来过滤,如:
> > www.domain.com 中文站点
> > eng.domain.com 英文站点
> >
> > 现在的问题是管理器类里没有传入request对象,没法获得当前访问的域名,不知道怎么处理了,请各位大哥赐教了,小弟不胜感激~``
> > Django刚学不久,很多东西不清楚~~`:(
> >
> > --
> > 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
> > 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
> > 详情: https://groups.google.com/group/python-cn
> > 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> >
> > Subscription settings:
> http://groups.google.com/group/python-cn/subscribe?hl=zh-CN
> >
>
> --
> 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
> 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
> 详情: https://groups.google.com/group/python-cn
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp



--
怀才就像是怀孕,日子久了才会被发现!
twitter:http://twitter.com/jondynet

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp