小编Cer*_*rzi的帖子

Jquery XHR导致dom更改,通过刷新等持续存在

这更像是一个设计问题,而不是技术问题,但它让我完全难过.

所以,我有一个网页(通过谷歌应用程序引擎托管)列出了一些单独的表格(每个都是一个问题/谜题).单个拼图有许多文本框可供填写,还有一个提交按钮.点击提交后,向服务器(运行python)发出ajax请求,检查给出的答案是否正确.作为回应,页面通过相关文本框添加适当的刻度和十字来更新,以及覆盖整个问题的中等不透明覆盖(以使整个事物具有"灰色"效果).

刷新页面时,这些修改显然会消失.但是,ajax请求会将答案信息保存到数据库中.问题本身是通过使用Jinja2呈现页面来创建的.

因此,所有相关数据都被保存,以便下次用户返回页面时,他过去回答的问题仍然是灰色的,他的答案和勾选/交叉仍然存在.但是,我无法弄清楚最好的方法是什么.我是否使用jinja2循环中的if语句对已完成问题的dom修改进行硬编码(例如:对于每个正在创建的问题,如果它已经被回答,则以不同方式呈现).或者,让页面正常加载,然后对页面上的每个问题/表单执行一个有载XHR会更好吗?

真的我想要做的是,因为每个表单都在Jinja2中呈现,执行xhr以查看它是否在数据库中有答案,如果有,则相应地采取行动.但将jinja2与ajax混合似乎相当混乱,肯定有更好的方法可以解决这个问题吗?

很抱歉这个冗长的问题,希望它至少是可以理解的.

python ajax jquery google-app-engine jinja2

5
推荐指数
1
解决办法
183
查看次数

调试AllAuth:尽管成功连接,社交帐户仍未记录用户

在登录表单中单击facebook登录按钮会正确显示fb登录弹出窗口,但在输入凭据后弹出窗口关闭且没有任何反应.

再次单击该按钮而不重新加载页面确认fb帐户已连接为浏览器控制台打印:

用户已连接时调用FB.login().

但是,在用户数据库中没有出现新条目,用户未被重定向且未登录.因此,问题似乎在于AllAuth如何处理事情.虽然后端的任何地方都没有显示调试信息,但这有点难以理解.

这是allauth设置:

LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'
DEFAULT_FROM_EMAIL = "[removed for stackoverflow]"

ACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
SOCIALACCOUNT_EMAIL_VERIFICATION = "mandatory"

SOCIALACCOUNT_QUERY_EMAIL = True
SOCIALACCOUNT_PROVIDERS = \
    {'facebook':
       {'METHOD': 'oauth2',
        'SCOPE': ['email','public_profile', 'user_friends'],
        'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
        'FIELDS': [
            'id',
            'email',
            'name',
            'first_name',
            'last_name',
            'verified',
            'locale',
            'timezone',
            'link',
            'updated_time'],
        'EXCHANGE_TOKEN': True,
        'VERIFIED_EMAIL': False,
        'VERSION': 'v2.4'}}
Run Code Online (Sandbox Code Playgroud)

这是登录页面上的js:

<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : '[removed for stackoverflow]',
      xfbml      : true,
      version …
Run Code Online (Sandbox Code Playgroud)

javascript django facebook django-allauth

5
推荐指数
1
解决办法
257
查看次数

多态重载 - 为了重载参数的目的,如何强制抽象类型"作用"为其派生类型之一?

DoSomething(Car car);
DoSomething(Bike bike);

public class Car : Vehicle {}
public class Bike : Vehicle {}
public abstract class Vehicle {}


void run(Vehicle vehicle) {
    DoSomething(vehicle);
}
Run Code Online (Sandbox Code Playgroud)

这感觉就像一个简单的问题,但我遇到了问题.DoSomething(车辆车辆)不存在,因此即使车辆"保证"为汽车或自行车,DoSomething(车辆)也会抛出错误.我怎样才能说服编译器"车辆"是自行车还是汽车,以便可以运行DoSomething?

当然,我可以采用另一种方法

DoSomething(Vehicle vehicle)
{
    if(vehicle is Car) ... etc
}
Run Code Online (Sandbox Code Playgroud)

但肯定有更清洁的方法吗?

编辑/ CLARITY

将此代码放在管理器类中而不是在Vehicle类中存在DoSomething()的动机是每个Vehicle需要访问程序的不同部分.例如:

DoSomething(Car car) {
    motorwayInfo.CheckMotorwayStatus();
}
DoSomething(Bike bike) {
    cycleInfo.CheckCyclePathStatus();
}
Run Code Online (Sandbox Code Playgroud)

不确定这个类比是否真的能够解决我的特定问题,哈哈 - 但基本上我不希望Car有任何对cycleInfo的引用,也不希望Bikes对motorWayInfo有任何引用.但是,将DoSomething放入车辆基本上意味着它的参数需要是:

DoSomething(CycleInfo cycleInfo, MotorwayInfo motorwayInfo)
Run Code Online (Sandbox Code Playgroud)

要么

DoSomething(InfoManager infoManager)
Run Code Online (Sandbox Code Playgroud)

这些都不是完全理想的,因为我知道每个子类型只会使用特定的信息对象.我错了吗?

c# polymorphism overloading

5
推荐指数
1
解决办法
87
查看次数

Unity:GetComponent &lt;BaseClass &lt;T &gt;&gt;-有什么解决方法吗?

如果对象的某个组件具有基类BaseClass<T>,则调用GetComponent<BaseClass<T>>()不会返回该组件。泛型参数似乎将其抛弃了,因为在BaseClass不使用泛型的情况下,GetComponent<BaseClass>()调用时将正确地将派生类作为组件返回。

有谁知道可靠的解决方法?在此类中使用泛型arg有点重要,因此显然我不愿为了适应这种情况而重写程序的类结构。

这是有关课程的粗略草图

//the base class that I'd like to be able to fetch the subclasses of using GetComponent
public abstract class BaseUIClass<T> : MonoBehaviour where T :BaseEntity {}

//EntityType1&2 are derived from BaseEntity
public class DerivedUIClass1 : BaseUIClass<EntityType1> {}
public class DerivedUIClass2 : BaseUIClass<EntityType2> {}
Run Code Online (Sandbox Code Playgroud)

BaseUIClass具有此方法:

public virtual void Setup(T entity) {}
Run Code Online (Sandbox Code Playgroud)

将组件添加到GO后不久需要调用该方法。

编辑:

实际上,我想要做的是以下操作,而无需进行硬编码(我想实际使用我定义的通用args)

if(uiClassObj is typeof(DerivedUIClass1) go.GetComponent<BaseUIClass<EntityType1>>();

else if(uiClassObj is typeof(DerivedUIClass2) go.GetComponent<BaseUIClass<EntityType2>>();
//etc
Run Code Online (Sandbox Code Playgroud)

但是考虑到正在使用类型的组件BaseUIClass<BaseEntity>,并且我感兴趣的两个以上派生类由DerivedUIClass1<EntityType1>和定义DerivedUIClass2<EntityType2> …

unity-game-engine

5
推荐指数
1
解决办法
914
查看次数

BadKeyError:无效的字符串键填充错误

我正在使用标准的几行代码从http get请求中检索密钥并使用它来从数据存储区获取某些内容,但是我遇到了一个我之前没有遇到过的问题.这只发生在实时(已部署)版本上 - 在开发服务器上运行代码时没有问题.

代码段:

  imgId = self.request.args.get("img_id")
  imageInfo = db.get(imgId)
Run Code Online (Sandbox Code Playgroud)

一个错误的例子:

    BadKeyError: Invalid string key  ahFjeWJlcm5hdXRzcHJvamVjdHINCxIFSW1hZ2UY1oYDDA=. Details: Incorrect padding
Run Code Online (Sandbox Code Playgroud)

如果我在db.get之前记录imgId的值,那么它是正确的(没有从调试消息中附加"=").有谁知道这可能导致什么?

python google-app-engine

4
推荐指数
1
解决办法
1921
查看次数

Tipfy&Jinja:为每个页面创建一个注销URL

我有一个jinja模板,带有通常的样板链接,其中一个是"退出"链接.在呈现页面之前,必须使用Users.create_logout_url()生成此链接的URL.

我想避免生成此URL并将其添加到每个get/post处理程序的render_response中.我已经研究过替代品,但还没有找到一种功能性的方法来解决这个问题.

BaseRequestHandler

这似乎是最干净的方法,但我不确定如何去做.会不会是这样的

self.vars['logout_link'] = users.create_logout_url(self.request.path))
Run Code Online (Sandbox Code Playgroud)

..然后,在所有标准响应处理程序中:

return render_response('template.html', **vars)
Run Code Online (Sandbox Code Playgroud)

装饰

这似乎是另一种选择,虽然看起来有点凌乱.我想它可以以相同的方式工作(将logout链接分配给包装函数中的局部变量).

上下文处理?

我正在使用tipfy/jinja,据我所知,这似乎不支持这个.

有什么建议我应该进一步调查吗?

谢谢

python google-app-engine jinja2 tipfy

3
推荐指数
1
解决办法
617
查看次数

get_serving_url不支持宽度/高度“大小”参数的解决方法?

get_serving_url当前不支持单独调整图像宽度/高度的大小,而是仅允许使用'size'参数调整正方形大小。

http://code.google.com/p/googleappengine/issues/detail?id=4200

有人可以为此建议有效的解决方法吗?似乎使用images.resize()是可行的方法,但是这是否不需要在blobstore中重新存储转换后的图像以获取get_serving_url的blob_key呢?

希望有一种足够有效的解决方案,以至于不消除使用Blobstore带来的速度优势!

谢谢大家

python google-app-engine blobstore

3
推荐指数
1
解决办法
413
查看次数

git lfs 迁移后损坏的 git repo

git lfs migrate 的不当使用——一切以某种方式生成了一个 .gitattributes 文件,其中包含每个已知的文件类型。这基本上破坏了我们的项目,因为每种类型的所有文件现在看起来都像这样:

    version https://git-lfs.github.com/spec/v1
    oid sha256:f6d1237f5b00a49b32cca659d9764fc16cf012ea887c3007bf9a2120d7e9fef4
    size 792
Run Code Online (Sandbox Code Playgroud)

..贯穿整个回购历史。包含目录的文件大小仍然大致相同,这让我希望有一种方法可以恢复它,但我自己无法解决。

由于异常情况,这个 repo 还没有在 github 上 - 如果需要,我们可以恢复到 repo 的副本,但这意味着失去几天的工作。

有没有办法撤销lfs命令?

这就是 .gitattributes 文件最终以某种方式生成的方式:

*.wav filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.collabignore filter=lfs diff=lfs merge=lfs -text
*.gitignore filter=lfs diff=lfs merge=lfs -text
*.xml filter=lfs diff=lfs merge=lfs …
Run Code Online (Sandbox Code Playgroud)

git git-lfs

1
推荐指数
1
解决办法
417
查看次数